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.8DjangoDjango 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值