DedeCMS最新版SQL注入漏洞(首发)
dedecms是一款基于PHP+MySQL的开源CMS系统,以其易用性和丰富的功能而广受欢迎。然而,正是因为其广泛应用,才使得它成为黑客攻击的目标。
漏洞测试环境
DedeCMS最新版V5.7.112
fofa 语句 app=”dedecms”
分析
漏洞点在 dede/makehtml_archives_action.php 这个文件中,首先看函数赋值
$typeid = (empty($typeid) ? 0 : $typeid);
很清晰,例如变量typeid没定义,那么默认为0,定义为它本身。并且这些参数没有经过任何的过滤,比如addslashes()
和intval()
等函数。
然后我们看获取条件
这部分
这里定义了一个变量idsql为空,然后根据gwhere的值再给idsql赋值。我们再看gwhere,gwhere传入变量ids,ids传入变量typeid。再看判断,当我们传入一个不为0的参数时,typeid则使用GetSonIds
函数进行处理,以获取所有的子id。
根据上图可知,获取子id部分也没有对typeid这个变量做过滤。比如GetSonIdsLogic这个函数,只是将id赋值到数组中,以及判断$v[0]的值是否等于$id。
再看idsql这个变量,直接拼接到SQL语句中
最终流程:
$typeid未经过滤 -> $ids -> $gwhere -> $idsql -> 拼接给 $dsql 造成注入。
复现
http://example.com/dedecms/dede/makehtml_archives_action.php?typeid=1+AND+(SELECT+1+FROM+(SELECT(SLEEP(2)))a)
直接上sqlmap跑起来!
官方修复方案
直接对typeid这个变量进行强转intval()
转换成整型。(不会绕过,睡了~)
原文始发于微信公众号(安全光圈):DedeCMS最新版SQL注入漏洞(首发)