Django JSONField/HStoreField SQL 注入漏洞 (CVE-2019-14234)
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 受到影响,这为我们提供了一个简单的方法来重现该漏洞。
漏洞复现
环境启动后,就可以看到Django的主页了http://192.168.44.132:8000
。
首先,访问http://192.168.44.132:8000/admin/
使用 usernameadmin
和 passworda123123123
登录到 Django-Admin 。
然后转到http://192.168.44.132:8000/admin/vuln/collection/
模型的列表视图Collection
:
添加detail__a'b=123
到GET参数,其中detail
JSONField:
1 | http://192.168.44.132:8000/admin/vuln/collection/?detail__a%27b=123 |
可以看到单引号已经注入成功,SQL语句报错: