CVE-2020-7471

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
#做如下修改

CVE-2020-7471CVE-2020-7471

sudo service postgresql restart

gpsql -U postgres -h 127.0.0.1#此时是免密进入,进行密码修改

CVE-2020-7471

sudo vim /etc/postgresql/12/main/pg_hba.conf
#更改配置文件,关闭免密登陆

CVE-2020-7471

sudo service postgresql restart
#重启postgresql
psql -U postgres -h 127.0.0.1
#创建数据库test

CVE-2020-7471

git clone git://github.com/Saferman/CVE-2020-7471.git
cd CVE-2020-7471/
cd sqlvul_project/
vi settings.py
#修改setting中数据库的相关配置

CVE-2020-7471
CVE-2020-7471

python3 manage.py migrate
python3 manage.py makemigrations vul_app
python3 manage.py migrate vul_app
#将表结构迁移到数据库中
psql -U postgres -h 127.0.0.1
#登陆数据库

CVE-2020-7471
(注:此处报错)
CVE-2020-7471
解决方案:
在app下的models.py中创建自己的数据模型
CVE-2020-7471CVE-2020-7471
查看表vul_app_info中原不存在数据
CVE-2020-7471

python3 CVE-2020-7471.py
#运行poc

CVE-2020-7471
成功注入
CVE-2020-7471

漏洞修复

  • 在 Github 仓库查找 django 的 commit 记录,官方对其的修复:
    https://github.com/django/django/commit/eb31d845323618d688ad429479c6dda973056136
上一篇:CVE-2021-26295 Apache OFBiz RMI 反序列化漏洞复现


下一篇:winrar远程代码执行漏洞(cve-2018-20250)