互联网漏洞文章收集

Django SQL注入漏洞(CVE-2020-7471)复现

2020-03-04  本文已影响0人  Your7Maxx

Django这个web框架我之前接触的不太多,python编写的,听说是广为流行的开源框架?不太清楚,平时还是最爱php开发的网站哈哈哈哈(懂得都懂),既然是非常流行的框架,那么最近也是前段时间把爆出来的CVE威胁做一个基础的复现,也为自己以后做渗透测试的时候如遇到此框架,并且版本号在影响范围里,可以考虑下这个思路。

(以下是引用他人的漏洞概述和影响范围):

0x01、漏洞概述

2月3日,Django 官方发布安全通告公布了一个通过StringAgg(分隔符)实现利用的潜在SQL注入漏洞(CVE-2020-7471)。攻击者可通过构造分隔符传递给聚合函数contrib.postgres.aggregates.StringAgg,从而绕过转义并注入恶意SQL语句。

p1

CVSS3.1评分:9.8

参考链接: https://www.djangoproject.com/weblog/2020/feb/03/security-releases

0x02、影响范围

受影响版本:

              Django 1.11.x < 1.11.28

               Django 2.2.x < 2.2.10

               Django 3.0.x < 3.0.3

               Django 主开发分支

不受影响产品版本:

                Django 1.11.28

                Django 2.2.10

                 Django 3.0.3

0x03、环境搭建(在kali上实现)

首先git下github上公开的漏洞poc和配置

p2

然后下载3.0.2版本的django

p3

django需要用到的数据库是postgresql,这个数据库我也是今天头一次使用,由于博主我这学期也开了数据库的课程,所以去google了一下它的有关信息,其实postgresql数据库有许多比较领先的、现代化的概念与特性,支持大部分的sql标准,额外也有许多扩展,运用于商业型的网站较多(划重点!哈哈)

p4

postgresql数据库在安装完毕之后呢,会自动创建一个类似于root的用户,用户名为postgres,密码为空,接着用这个root用户的身份登陆。

打开服务:

p5

登陆:

p6

psql命令进入类似于shell的数据库界面:

p7

将刚才那个postgres用户添加个密码:

p8

创建一个数据库:

p9

数据库创建好了,我们配置一下setting把:

p10

可以看到刚才git的文件CVE-2020-7471

p11

按照github配置教程依次进行:

p12

vim打开settings.py文件,大概在70+行也就是DATABASES这个模块里,把数据库名称和密码改成上文我们修改过的

p13

返回上一级目录,接下来就是利用manage.py进行初始化和配置了。

p14 p14 p15 p16

好了,环境配置基本完成,我们在进入到postgresql中看看我们刚才创建的数据库。

p17

\c xxx命令是连接进入到xxx数据库。

\d 显示每个匹配关系

p18

选择有问题的vul_app_info数据表,可以查看到没有任何数据。

p19

接着轮到poc上场了:

p20

再次查看该表:数据已经写入了。

p21

github上poc地址:https://github.com/Saferman/CVE-2020-7471

该漏洞的详细分析原理可参考链接:https://xz.aliyun.com/t/7218

在今后的一些渗透过程中,如果遇到类似的受影响的Django框架,可以利用该注入漏洞,进行操作。

上一篇下一篇

猜你喜欢

热点阅读