温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python sqlalchemy ORM注入漏洞的分析过程

发布时间:2021-10-19 10:23:06 来源:亿速云 阅读:699 作者:柒染 栏目:大数据

Python sqlalchemy ORM注入漏洞的分析过程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

介绍:

SQLAlchemy是一个Python的SQL工具包以及数据库对象映射框架。

影响:

SQLAlchemy 1.3.3 版本存在ORM注入漏洞,攻击者可利用该漏洞获取数据库敏感信息。

安全等级:

漏洞编号:

CNVD-2019-17301

分析:

1、对于不合规的SQL语句为进行过滤和拦截。

2、所谓的SAQL注入,就是指在SQLAlchemy中没有对数据进行有效的验证导致恶意数据进入应用程序中造成的。

复现环境:

PHPStudy 2018 php 5.4.45

SQLAlchemy 1.3.3

Python3

环境搭建:

PHPStudy 2018

https://www.cr173.com/soft/838278.html

SQLAlchemy 1.3.3

pip install MySQL-pythonPip install SQLAlchemy

漏洞分析:

在sqlalchemy.orm.session.sessionmaker之中,这里是数据库连接会话。

Python sqlalchemy ORM注入漏洞的分析过程

漏洞入口定位:sqlalchemy\orm\session.py 第608行,这里是数据会连接会话的对象。

Python sqlalchemy ORM注入漏洞的分析过程

漏洞入口方法定位:sqlalchemy\orm\session.py 第1137行,进入到执行SQL语句的方法。

Python sqlalchemy ORM注入漏洞的分析过程

继续往下来看方法代码,第1267行将SQL语句进行执行。

Python sqlalchemy ORM注入漏洞的分析过程

Execute() 是SQL语句执行的一个接口,允许执行任意的SQL语句,没有对于SQL注入进行有效的过滤。

验证:

POC_01

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerimport sqlalchemyprint("sqlalchemy_version:",sqlalchemy.__version__)
engine = create_engine('mysql://root:123456@192.168.56.101:3306/mysql?charset=utf8')DB_Session = sessionmaker(bind=engine)session = DB_Session()session.execute('use mysql;')print(        session.execute(            """select * from user where User='root'            *********;"""    ).fetchall())

截图_01

Python sqlalchemy ORM注入漏洞的分析过程

POC_02

from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerimport sqlalchemyprint("sqlalchemy_version:",sqlalchemy.__version__)
engine = create_engine('mysql://root:123456@192.168.56.101:3306/mysql?charset=utf8')DB_Session = sessionmaker(bind=engine)session = DB_Session()session.execute('use mysql;')print(        session.execute(            """                select * from user where User='root' ********;            """    ).fetchall())

截图_02

Python sqlalchemy ORM注入漏洞的分析过程

修复建议:

1、过滤非预定义中的拼接字符,比如过多的引号、@、冒号、分号等等;

2、使用有效的安全防护设备;

3、开发管理中禁止使用该接口;

关于Python sqlalchemy ORM注入漏洞的分析过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI