ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

CVE-2019-14234 Django JSONField SQL注入漏洞

2022-06-25 16:04:56  阅读:147  来源: 互联网

标签:14234 1.11 Django ORM https 2.2 2.1 CVE


一、漏洞概述

Django是一个大而全的Web框架,其支持很多数据库引擎,包括Postgresql、Mysql、Oracle、Sqlite3等,但与Django天生为一对儿的数据库莫过于Postgresql了,Django官方也建议配合Postgresql一起使用。该漏洞的出现的原因在于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

 

三、漏洞原理

  其实这是一个SQL注入的另一种形式——ORM注入(Object Relational Mapping)

  1.ORM是什么:ORM 是写程序时的一种写法,以前写程序查数据库的时候都是代码加 sql 语句写到一起,程序庞大后就很难管理,很难维护。后来就把程序和 sql 语句分开了。同时 ORM 把 sql 的写法进行了封装,程序调用更为方便,能让程序员真正的去关注逻辑层代码,去面向对象编程;

  2.该漏洞成因:queryset中有transform和lookup两个方式,分别被作用于“通过外键连接两个表”和“通过什么方式与里面的值进行比对(默认情况下是exact)”。所以只要是控制了queryset的键名,注入就水到渠成了,但这里有一个问题就是.filter( )里的键名是没有办法控制的,能控制的只有键值。但有一种情况,就是开发者把用户传入的整个对象都传给了filter()函数时,用户就可以通过控制filter的键名来进一步控制queryset的键名,进而实现ORM注入。——来自P师傅:https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html

 

四、漏洞复现环境

Kali Linux + Vulfocus
渗透机:Kali Linux 
靶机:Vulfocus

 

五、实验步骤

1.开启镜像环境,访问页面(直接进后台对Collection模型进行管理)

 

 

 2.构造payload:http://192.168.117.131:58480/admin/vuln/collection/detail__a%27b=1

 

 

 

3.复现还是很简单的,在这里主要还是记录一下ORM注入的情况和思路把。

 

六、修复方式

Django 官方已经发布新版本修复了上述漏洞,请受影响的用户尽快升级进行防护。升级Django到 >=2.2.4、>=2.1.11、>=1.11.23版本。

Django 2.2.4下载地址:

https://www.djangoproject.com/m/releases/2.2/Django-2.2.4.tar.gz

Django 2.1.11 下载地址

https://www.djangoproject.com/m/releases/2.1/Django-2.1.11.tar.gz

Django 1.11.23 下载地址:

https://www.djangoproject.com/m/releases/1.11/Django-1.11.23.tar.gz
——https://blog.csdn.net/weixin_42250835/article/details/121106792

 

七、POC

1.https://www.cnblogs.com/wavesky/p/16411757.html

2.https://github.com/wave-to/Poc/blob/main/Sql_or_ORM_injuection/Poc_CVE-2019-14234.py

标签:14234,1.11,Django,ORM,https,2.2,2.1,CVE
来源: https://www.cnblogs.com/wavesky/p/16410326.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[[email protected]]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有