資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網絡安全教程|rigasin.com|我的開發(fā)技術隨記

標題: thinkphp5遠程代碼執(zhí)行 [打印本頁]

作者: 1366875557    時間: 2019-5-20 15:48
標題: thinkphp5遠程代碼執(zhí)行
thinkphp5遠程代碼執(zhí)行

影響范圍:5.x < 5.1.31, <= 5.0.23
危害:遠程代碼執(zhí)行
漏洞分析
分析補�。�
802f284bec821a608e7543d91126abc5901b2815。
路由信息中controller的部分進行了過濾,可知問題出現在路由調度時。
(, 下載次數: 94)
以5.1.23版本進行分析,執(zhí)行路由調度的代碼如下:
(, 下載次數: 97)

其中使用了$this->app->controller方法來實例化控制器,然后調用實例中的方法。跟進controller方法:

(, 下載次數: 85)

其中通過parseModuleAndClass方法解析出$module和$class,然后實例化$class。
而parseModuleAndClass方法中,當$name以反斜線\開始時直接將其作為類名。利用命名空間的特點,如果可以控制此處的$name(即路由中的controller部分),那么就可以實例化任何一個類。
接著,我們再往回看路由解析的代碼。其中route/dispatch/Url.php:: parseUrl方法調用了route/Rule.php:: parseUrlPath來解析pathinfo中的路由信息
(, 下載次數: 101)
代碼比較簡單,就是使用/對$url進行分割,未進行任何過濾。
其中的路由url從Request::path()中獲取
(, 下載次數: 96)

由于var_pathinfo的默認配置為s,我們可利用$_GET[‘s’]來傳遞路由信息,也可利用pathinfo來傳遞,但測試時windows環(huán)境下會將$_SERVER[‘pathinfo’]中的\替換為/。
結合前面分析可得初步利用代碼如下:index.php?s=index/\namespace\class/method ,這將會實例化\namespace\class類并執(zhí)行method方法。
然而利用過程中會存在一些限制,部分類在實例化時由于缺少參數而報錯。
經過一番尋找,在\think\Request類中找到可以利用的方法input。以下為執(zhí)行phpinfo

(, 下載次數: 92)











歡迎光臨 資源共享吧|易語言論壇|逆向破解教程|輔助開發(fā)教程|網絡安全教程|rigasin.com|我的開發(fā)技術隨記 (http://rigasin.com/) Powered by Discuz! X3.4