DedeCMS哈希长度拓展攻击引起的越权漏洞(含PoC)

  • A+
所属分类:网络安全文章
腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳定/安全漏洞多/单点部署无冗余等常见问题,满足电商/直播/教育等日均PV1-100万的网站部署需求。


成都、重庆区云产品3折特惠,全新机型计算提速,最高睿频可达3.7GHz

漏洞影响:Dedecms(织梦CMS) V5.7.72 正式版20180109 (最新版)

漏洞原理

DedeCMS用户认证是通过验证Cookie中的 DedeUserID和DedeUserID__ckMd5进行的。

其中$cfg_cookie_encode是安装时生成的不可预测字符串。

其中md5($cfg_cookie_encode.$_COOKIE[$key])符合md5(salt + padding + data)的格式,易受哈希长度拓展攻击,只要我们知道了md5($cfg_cookie_encode)和$cfg_cookie_encode的长度即可伪造cookie。

从安装时的逻辑中我们可以知道$cfg_cookie_encode的长度为28~32

DedeCMS哈希长度拓展攻击引起的越权漏洞(含PoC)

找到\member\article_add.php

25行检测dopost是否为空,46行导入模板文件

找到\member\templets\article_add.htm

74行调用PrintAutoFieldsAdd(),跟进去

238行输出$dede_addonfields

239行输出md5($dede_addonfields.$cfg_cookie_encode)

浏览器中直接访问,可知在默认情况下$dede_addonfields为空值

因此表单dede_fieldshash的值就是md5($cfg_cookie_encode)

找到MemberLogin类,M_ID 在从cookie中获取时会调用GetNum()进行处理 跟进去

这样处理一下就会消除哈希长度扩展攻击引入的空字符等特殊字符的影响

但是在全局文件config.php中会对输入调用XSSClean()对$_COOKIE进行过滤

DedeCMS哈希长度拓展攻击引起的越权漏洞(含PoC)

从24行可知,空字符会被替换为空导致漏洞不能利用。

又研究了一下发现\plus下的文件都是直接包含common.inc.php而不是config.php

因此可以利用此目录下的文件进行哈希长度拓展攻击!

例如,\plus\feedback_ajax.php 用于文章评论,因此这里可以利用哈希长度拓展攻击伪造任意用户身份实现越权评论文章!

DedeCMS哈希长度拓展攻击引起的越权漏洞(含PoC)

DedeCMS哈希长度拓展攻击引起的越权漏洞(含PoC)

CE安全网

发表评论

您必须登录才能发表评论!