一 、本篇
本文為“DEDECMS僞随機漏洞”系列第三篇,檢視前兩篇可點選底部【閱讀原文】:
第一篇:《DEDECMS僞随機漏洞分析 (一) PHP下随機函數的研究》
第二篇:《DEDECMS僞随機漏洞分析 (二) cookie算法與key随機強度分析》
根據第二篇,我們有信心去周遊root key的所有可能, 但是我們還需要一個碰撞點, 才能真正得到root key的值, 本篇找到了兩個碰撞點, 并編寫了簡單的POC來擷取root key。
二 、碰撞點
可能還存在其他碰撞點, 這兒僅找到兩個: )
1.使用者首頁
1.1 限制條件(中)
要求開啟會員功能
1.2 代碼分析

1.3 擷取方法
請求:(檢視admin首頁)
響應:
admin
last_vid_ckMd5 的hash值
2. 自定義表單
2.1 限制條件(低)
網站管理者需要為網站定義表單.
下載下傳了幾套通過DEDECMS改造的模闆, 都保留了該功能, 且大部分站點有自己的表單格式.或者說正常在使用的dedcms大部分都有表單: )
2.2 代碼分析
2.3 擷取方法
請求:(檢視表單)
響應:
dede_fieIds
dede_fieIdshash 這兩個值
3. POC
1. 儲存如下代碼到dede_funcookie.php
2. 修改裡面的$cpu, $attack_method, $attack_param, $attack_hash
3. 若是目标網站為php7: php7 dede_funcookie.php 若是目标網站為php5: php5 dede_funcookie.php,若是不明确可以兩個都跑 ε=ε=ε=(~ ̄▽ ̄)~
4. 在16核 CPU,8G記憶體下, 跑完整個程式需要 4444秒,建議不要同時跑兩個, 注意自己的CPU負載情況
四、危害
1. Cookie僞造
2. 通過郵箱認證
3. 前台RCE
郵箱hash算法,唯一不知道的是rootkey, 通過poc跑出了rootkey,就能構造出來,然後通路hash即可通過郵箱認證, 對于”dedecms前台任意使用者登入”的利用有些許幫助⑧
五、實戰
TIPS: 可以通過指紋,把hash全部采集到, 然後腳本跑一遍即可全部出結果, 因為全網的dedecms的root key分布在2^33這個範圍内: ), 在跑腳本周遊這個範圍的時候其實都覆寫到了.
FIND A Luck One:
1. 指紋查找
2. 碰撞data和hash
3. ATTACK:
修改一下dede_funcookie.php裡面的參數:*本文作者:,轉載請注明來自FreeBuf.COM
4. GET ROOT KEY AND ENJOY:
睡了一覺, 看一下結果:
在nohup2.out裡面:
防護建議
可以考慮在rootkey後面手動加入一些值,或者生成算法部分加入目前時間、ip、servername,或者uuid混合一下,作為防護手段。
*本文作者:光通天下,轉載請注明來自FreeBuf.COM
精彩推薦