74CMS 曝高危漏洞肠缨,攻擊者只需注冊(cè)會(huì)員賬號(hào)净蚤,上傳一份包含惡意內(nèi)容的簡歷踏揣,即可控制網(wǎng)站服務(wù)器,進(jìn)行任意操作开瞭。
74CMS 又稱 “騎士 CMS ”,是一項(xiàng)以 PHP 和 MySQL 為核心開發(fā)的一套免費(fèi)并開源的專業(yè)人才網(wǎng)站系統(tǒng)罩息。軟件具有執(zhí)行效率高嗤详、模板自由切換、后臺(tái)管理功能方便等諸多優(yōu)秀特點(diǎn)瓷炮。74CMS 多應(yīng)用于大型人才招聘網(wǎng)站葱色,網(wǎng)站中通常會(huì)含有大量會(huì)員個(gè)人簡歷等私密信息,因此娘香,該漏洞一旦被不法分子利用將產(chǎn)生極為嚴(yán)重的后果苍狰。
漏洞原理:
通過對(duì) 74CMS 最新版本進(jìn)行源碼分析,發(fā)現(xiàn)此漏洞是一個(gè)模板注入漏洞烘绽。 在文件 Application/Home/Controller/MController.class.php 中:
可見淋昭,這里將 $type 參數(shù)傳入 display 函數(shù),display 函數(shù)是 ThinkPHP 中展示模板的函數(shù)安接。跟進(jìn)了幾個(gè)函數(shù)翔忽,進(jìn)入了 View 類的 display 函數(shù):
可見,這里拿到了 $templateFile 并傳入 fetch 函數(shù)盏檐,將 fetch 的結(jié)果交給 render 函數(shù)歇式。這兩個(gè)函數(shù),fetch 是將文件內(nèi)容獲取到胡野,render 是使用 ThinkPHP 的模板引擎渲染材失。
拿自帶的 favicon.ico 做下試驗(yàn),可成功包含:
漏洞利用:
那么给涕,這個(gè)漏洞如何利用豺憔?因?yàn)?type 的值是作為 display 函數(shù)的參數(shù)傳入的,所以實(shí)際上這個(gè)漏洞可以理解為 “模板引擎注入”够庙,現(xiàn)在只需要上傳一個(gè)內(nèi)容符合 ThinkPHP 模板格式的文件恭应,再作為 type 的值即可。
查看 ThinkPHP 文檔:
可知耘眨,要使用原生 PHP 的話昼榛,只需要將代碼包含在 <php> 標(biāo)簽內(nèi)即可。
74CMS 里,個(gè)人用戶創(chuàng)建簡歷后支持上傳 docx 格式的簡歷胆屿。我們上傳一個(gè)包含一句話木馬的 docx 文件奥喻,將其作為模板。數(shù)據(jù)包如下:
pid 是簡歷 id非迹,word_resume 就是包含模板的文件环鲤。上傳成功,獲取文件名和路徑:
再將這個(gè)文件名作為 type 的值憎兽,成功執(zhí)行一句話木馬冷离,CKnife(網(wǎng)站管理工具)連接,獲取服務(wù)器權(quán)限:
參考鏈接:
https://forum.90sec.org/forum.php?mod=viewthread&tid=10311