2018年12月11日,exploit-db更新了一個thinkphp架構遠端代碼執行漏洞
由于架構對控制器名沒有進行足夠的檢測導緻在沒有開啟強制路由的情況下getshell
漏洞影響範圍
Thinkphp 5.1.0 - 5.1.31
Thinkphp 5.0.5 - 5.0.23
安裝 :
下載下傳位址http://www.thinkphp.cn/donate/download/id/1125.html
下載下傳完解壓在/var/www/html/目錄下即可
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiMiBTO5YWNxYGMzMjMzI2MzkDZzEmMzIGN0MjZxQDZx8CXvR3YyVGZvN2Lc12bj5CO3M3MuEzZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
漏洞分析
/thinkphp/library/think/App.php 行數:120
我們可以看到通過self::routerCheck函數進行路由檢測
我們可以看到又進入$request->path()函數
/thinkphp/library/think/Request.php 行數:416行
進入pathinfo()函數,繼續追蹤到384行
Config::get('var_pathinfo')是配置檔案中的設定的參數,預設值為s,從GET中擷取鍵值,然後指派給routeCheck中的$path
我們再回到App.php 行數:606
這裡會進行路由檢測,檢查$check後會進入else分支導入路由配置,接着檢測路由url排程結果為$result,如果排程失敗且開啟了強制路由$must,則報出路由無效,接着進入Route::parseUrl函數,根據$path(自定義url)解析操作
開始跟蹤parseUrl函數
/thinkphp/library/think/Route.php 行數:1208