0x00,复现前言
是的,我又来了一个漏洞复现,这个复现我觉得还是有点曲折的,大部分都是配置环境的坑,别的地方基本上没有什么坑可以跳,除非是自己没有补充维生素B₁然后走夜路导致的(那咱也没办法)。
0x01,漏洞介绍
漏洞描述:如果将不受信任的数据用作StringAgg分隔符,则1.11.28之前的Django 1.11、2.2.10之前的2.2和3.0.3之前的3.0允许进行SQL注入(例如,在Django应用程序中,该应用程序与用户一起提供一系列数据的下载)-指定的列分隔符)。通过将适当设计的定界符传递给contrib.postgres.aggregates.StringAgg实例,可以打破转义并注入恶意SQL。
影响版本:
1.11-1.11.28(不含)
2.2-2.2.10(不含)
3.0-3.0.3(不含)
0x02,环境配置
使用pip3安装Django,版本:3.0.2命令: pip3 install Django==3.0.2
(如果没有安装pip3可以使用apt-get install python3-pip)
忘了说了:pip安装后需要换一下源,这个可以去看看各大网站的文章。
是的,我们还需要安装一个postgres数据库。
apt-get install postgresql postgresql-client
启动postgresql
然后输入psql,回车。
更改postgres密码为123,创建test
然后我们需要创建一个数据库以进行测试,我这里就创建一个test数据库。
0x03,复现过程
配置
CVE-2020-7471/sqlvul_projects/settings.py
然后初始化数据库test中的表:
python3 manage.pymigrate
python3manage.py makemigrations vul_app
python3 manage.pymigrate vul_app
进入数据库,查看一下信息。
然后运行poc脚本
python3 CVE-2020-7471.py
0x04,如何修复
Django官方已经给出了新版本,并修复了上面的漏洞,可以更新到最新。
好了,关灯,睡觉,各位表哥晚安。 |