白帽駭客資安網-網站安全的靠山,提供漏洞修補,網站被駭入侵,網站資訊安全服務

ThinkPHP 5.0 漏洞告知與遠端代碼執行漏洞修復建議

esafe白帽駭客資安網,最近修復了一個遠端代碼執行漏洞。主要影響的版本為5.0.0~5.0.23版本:
此次爆出漏洞的ThinkPHP 5.x版本是官方於2015年發佈的新一代框架,其中5.0版本於2016年的9月份布。在不久之前,ThinkPHP 5.x版本就曝出遠端代碼執行漏洞。短短兩三個月後,ThinkPHP 5.0 就又曝出了新的遠端代碼執行漏洞,這說明其框架在安全方面有較大缺陷,預計在日後會遭受更嚴峻的考驗。

概況
ThinkPHP誕生於2006年,是一個國產開源的PHP開發框架,其借鑒了Struts框架的Action物件,同時也使用物件導向的開發結構和MVC模式。ThinkPHP可在Windows和Linux等作業系統運行,支援MySql,Sqlite和PostgreSQL等多種資料庫以及PDO擴展,是一款跨平臺,跨版本以及簡單易用的PHP框架。
目前FOFA系統最新資料(一年內資料)顯示全球範圍內共有266459個ThinkPHP網站對外開放服務。中國大陸地區使用數量最多,共有143230台,美國第二,共有46348台,中國香港特別行政區第三,共有15453台,印尼第四,共有4969台。
全球範圍內ThinkPHP網站分佈情況(僅為分佈情況,非漏洞影響情況)

中國大陸地區浙江省使用用數量最多,共有81746台;北京市第二,共有25961台,廣東省第三,共有6899台,上海市第四,共有3963台,四川省第五,共有3767台。
中國大陸範圍內ThinkPHP網站分佈情況(僅為分佈情況,非漏洞影響情況)
描述: 2.jpg
危害等級

嚴重
漏洞原理
本次以5.0.20版本為例。
本次漏洞觸發點在Request.php檔裡的method方法中,該方法的功能主要是判斷請求類型。
描述: 111111.jpg
跟進method方法,這裡判斷是否存在'var_method',如果存在則執行$this->{$this->method}($_POST);
描述: 333.jpg
在config.php中,可以看到 'var_method' 是表單請求偽變數,其預設值為 '_method'。
描述: 111.png
這裡可以POST _method=__construct用構造函數來進行變數覆蓋,實現命令執行。
在構造函數中,會判斷其傳入參數的key是否是該類屬性,如果是,則將對應的value賦值給該屬性,可以進行變數覆蓋。
描述: 444.jpg
再看全域過濾函數filtervalue,根據上一步的變數覆蓋,POST filter[]=system,將$filter賦值為array('system'),同時POST 123456=whoami,觸發過濾函數,調用call_user_func方法,執行whoami命令。
描述: 555.jpg
複現結果:
描述: 222.jpg
漏洞影響
目前漏洞影響版本號包括:
5.x <= 5.0.23
以下基於ThinkPHP 5 二次開發的內容管理系統,很可能受到該漏洞影響,建議廠商及時更新。
AdminLTE後臺管理系統
layui後臺管理系統
thinkcmf
H-ui.admin後臺管理系統
tpshop
FsatAdmin
eyoucms
LarryCMS後臺管理系統
tpadmin後臺管理系統
snake後臺管理系統
ThinkSNS
DolphinPHP後臺管理系統
WeMall商城系統
CLTPHP
齊博CMS
DSMALL
YFCMF
HisiPHP後臺管理系統
Tplay後臺管理系統
lyadmin後臺管理系統
haoid後臺管理系統
漏洞POC
目前FOFA用戶端平臺已經更新該ThinkPHP漏洞的檢測POC。
POC截圖
描述: 图片.png
CVE編號
暫無
修復建議
1、官網已發佈安全更新,用戶可以通過網址http://www.thinkphp.cn/topic/60992.html獲得。
2、如暫時無法更新到最新版本,建議直接參考最新版本的Request類的method方法進行手動修復。參考網址:https://blog.thinkphp.cn/910675
3、建議使用以上ThinkPHP 5 開發的內容管理系統的使用者及時檢查是否存在該漏洞。
 

分享: