标签:postgresql Django 漏洞 2020 7471 CVE
CVE-2020-7471 Django SQL注入漏洞复现
漏洞简介
2020年2月3日,Django 官方发布安全通告公布了一个通过StringAgg(分隔符)实现利用的潜在SQL注入漏洞(CVE-2020-7471)。攻击者可通过构造分隔符传递给聚合函数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 SQL注入漏洞 | CVE-2020-7471 | 严重 |
CVSS评分 | 漏洞组件 | 受影响版本 |
9.8 | Django | Django 1.11.x < 1.11.28 等 |
环境搭建
- Kali
- Django
漏洞复现
1.安装 django 漏洞版本,本次测试用的是(django==3.0.2)
sudo apt-get install python3-pip
pip3 install django==3.0.2 -i https://pypi.mirrors.ustc.edu.cn/simple/(注:用普通用户执行该命令。因为kali-2020.1自带postgresql,就不做演示了。)
sudo vim /etc/postgresql/13/main/pg_hba.conf
#做如下修改
sudo service postgresql restart
gpsql -U postgres -h 127.0.0.1#此时是免密进入,进行密码修改
sudo vim /etc/postgresql/12/main/pg_hba.conf
#更改配置文件,关闭免密登陆
sudo service postgresql restart
#重启postgresql
psql -U postgres -h 127.0.0.1
#创建数据库test
git clone git://github.com/Saferman/CVE-2020-7471.git
cd CVE-2020-7471/
cd sqlvul_project/
vi settings.py
#修改setting中数据库的相关配置
python3 manage.py migrate
python3 manage.py makemigrations vul_app
python3 manage.py migrate vul_app
#将表结构迁移到数据库中
psql -U postgres -h 127.0.0.1
#登陆数据库
(注:此处报错)
解决方案:
在app下的models.py中创建自己的数据模型
查看表vul_app_info中原不存在数据
python3 CVE-2020-7471.py
#运行poc
成功注入
漏洞修复
- 在 Github 仓库查找 django 的 commit 记录,官方对其的修复:
https://github.com/django/django/commit/eb31d845323618d688ad429479c6dda973056136
标签:postgresql,Django,漏洞,2020,7471,CVE 来源: https://blog.csdn.net/weixin_48300170/article/details/118889047
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。