漏洞描述:
thinkphp在載入模版解析變數時存在變數覆蓋的問題,且沒有對 $cachefile 進行相應的消毒處理,導致模板檔案的路徑可以被覆蓋,從而導致任意檔案包含漏洞的發生。
主要還是變數覆蓋的問題。
漏洞範圍:
漏洞影響版本: 5.0.0<=thinkphp5<=5.0.18 、5.1.0<=thinkphp<=5.1.10
本地復現環境:
tp5.0.15 php version :7.0.12
<?phpassign方法 進行了模板變數賦值 ,把可控資料存在\think\viewuse\think\controller;
class index extends
controller
}
主要問題出現在fetch 這裡
細跟一下fetch
fetch 前面的方法 主要是載入模板輸出
這裡的 $method 的值為fetch 可以在view\driver\think.php 檢視引擎
這裡要跟到think\templae.php
在讀取的時候採用了乙個read的方法。
然後我們去跟read ,
關鍵的部分:
這裡extract 該函式使用陣列鍵名作為變數名, extr_overwrite 變數存在則覆蓋
原本cachefile的值:
e:\phpstudy\phptutorial\www\tp5.0.15\runtime\temp\cb64592f1fa49f590673c9beddff4365.php被覆蓋成 echod.txt
* @param array $vars 模板輸出變數
我們輸入的cachefile=echod.txt通過extract 該函式使 陣列鍵名作為變數名
變成$cachefile=echod.txt
最後的inclde $cachefile; 觸發 任意檔案包含漏洞。
這個洞在thinkcmf 後台的乙個upload處可以復現。如果,allow_url_include 開啟,可利用此處 執行任意**
ThinkPHP5 x命令執行漏洞分析
在routecheck呼叫 request path 獲取相容模式s傳入的模組 控制器 方法 在routecheck中會讀取route.php中的路由並進行匹配傳入的路由,不成功會呼叫route parseurl處理 在parseurl函式1226行呼叫parseurlpath函式處理模組控制器方法...
thinkphp3 x中cookie方法的用法分析
一 cookie函式也是乙個多元化操作函式,完成cookie的設定 獲取和刪除操作。cookie 用於cookie 設定 獲取 刪除操作 用法 cookie name,valu程式設計客棧e option null 引數 name 必須 要操作的cookie變數 value 可選 要設定的cooki...
ThinkPHP 5 x遠端命令執行漏洞復現
thinkphp 5.x遠端命令執行漏洞復現 一 漏洞描述 2018年12月10日,thinkphp官方發布了安全更新,其中修復了thinkphp5框架的乙個高危漏洞 漏洞的原因是由於框架對控制器名沒有進行足夠的檢測,導致在沒有開啟強制路由 預設未開啟 的情況下可能導致遠端 執行,受影響的版本包括5...