微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐