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如下:
執行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) 寫入一句話木馬文件
7) 螞蟻測試鏈接
0x05 漏洞修復建議
將 HomebaseController.class.php 和 AdminbaseController.class.php 類中 display 和 fetch 函數的修飾符改為 protected
參考鏈接: