PythonsqlalchemyORM注入漏洞的分析过程

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注入漏洞的分析过程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


分享标题:PythonsqlalchemyORM注入漏洞的分析过程
地址分享:http://pwwzsj.com/article/pcsgii.html