1. 程式人生 > >漏洞預警 | ThinkPHP 5.x遠端命令執行漏洞

漏洞預警 | ThinkPHP 5.x遠端命令執行漏洞

ThinkPHP採用面向物件的開發結構和MVC模式,融合了Struts的思想和TagLib(標籤庫)、RoR的ORM對映和ActiveRecord模式,是一款相容性高、部署簡單的輕量級國產PHP開發框架。

近日,ThinkPHP團隊釋出了版本更新資訊,修復一個遠端程式碼執行漏洞。該漏洞是由於框架對控制器名沒有進行足夠的檢測,導致在沒有開啟強制路由的情況下可遠端執行程式碼。攻擊者利用該漏洞,可在未經授權的情況下,對目標網站進行遠端命令執行攻擊。

 

該漏洞存在於thinkphp\library\think\route\dispatch\Module.php檔案中,核心程式碼如圖所示:

網上公佈的poc為:http://xx.xx.xx/public/index.php?s=/index/\think\request/cache&key=1|phpinfo,當變數s傳進之後受explode函式截斷,$controller的值為:\think\request,程式碼如圖所示:

 

在Thinkphp5.1.29的\think\Request類中找到可以利用的方法cache,程式碼如圖所示:

 

Poc中cache&key=1|phpinfo經過程式碼處理後函式$fun的值為phpinfo

 

本地搭建測試環境驗證,嘗試執行phpinfo命令,如下圖所示:

 

 

 解決方案如下 :