怎样分析CVE-2020-7471 Django sql注入漏洞复现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。
使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
攻击者可通过构造分隔符传递给聚合函数contrib.postgres.aggregates.StringAgg,从而绕过转义符号(\)并注入恶意SQL语句。
Django 1.11.x < 1.11.28
Django 2.2.x < 2.2.10
Django 3.0.x < 3.0.3
Django 主开发分支
不受影响范围:
Django 1.11.28
Django 2.2.10
Django 3.0.3
1.使用kali搭建django 漏洞版本使用版本为3.0.2
pip3 install django==3.0.2
2. 安装postgres 数据库,由于kali自带了postgres数据库,这里直接启动
systemctl start postgresql
3.使用命令sudo -i -u postgres进入postgres账户,然后输入psql进入数据库,并创建测试数据库test。CREATE DATABASE test;
4.修改数据库密码,ALTER USER postgres WITH PASSWORD 'root';
1.这里使用poc来进行实验,下载poc到本地
git clone https://github.com/Saferman/CVE-2020-7471.git
2.然后进入到CVE-2020-7471/sqlvul_projects/settings.py,修改数据库配置,如果之前安装postgres数据库使用的默认配置(包括密码),这里就不需修改任何任何配置
3. 修改完成后回到上层,然后利用CVE中的代码初始化测试数据库test中的表
python3 manage.py migrate python3 manage.py makemigrations vul_app python3 manage.py migrate vul_app
运行没有改变数据没关系,初始化环境完成
4.进test数据库查看数据表
\c test //进入test数据库 \d 查看全部表
查看vul_app_info表的信息
select * from vul_app_info;
5.没有插入数据没没关系,使用vim 查看CVE-2020-7471.py里内容
vim CVE-2020-7471.py
6.执行poc向数据库插入数据
python3 CVE-2020-7471.py
可以看到POC里面的数据写入到数据库中,注入成功
升级到Django最新版3.0.3
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。