資源共享吧|易語(yǔ)言論壇|逆向破解教程|輔助開(kāi)發(fā)教程|網(wǎng)絡(luò)安全教程|rigasin.com|我的開(kāi)發(fā)技術(shù)隨記

 找回密碼
 注冊(cè)成為正式會(huì)員
查看: 1621|回復(fù): 0
打印 上一主題 下一主題

[網(wǎng)絡(luò)安全/滲透測(cè)試] thinkphp5遠(yuǎn)程代碼執(zhí)行

[復(fù)制鏈接]

184

主題

347

帖子

14

精華

資源共享吧豪華貴族SVIP

Rank: 9Rank: 9Rank: 9

資源幣
18816
積分
3920
貢獻(xiàn)
1368
在線時(shí)間
1084 小時(shí)
注冊(cè)時(shí)間
2015-4-18
最后登錄
2020-2-22

終身成就常駐居民幽默大師灌水大師原創(chuàng)先鋒精華會(huì)員資源共享吧女神宣傳大使愛(ài)心大使

跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2019-5-20 15:48:31 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
thinkphp5遠(yuǎn)程代碼執(zhí)行

影響范圍:5.x < 5.1.31, <= 5.0.23
危害:遠(yuǎn)程代碼執(zhí)行
漏洞分析
分析補(bǔ)丁:
802f284bec821a608e7543d91126abc5901b2815。
路由信息中controller的部分進(jìn)行了過(guò)濾,可知問(wèn)題出現(xiàn)在路由調(diào)度時(shí)。
以5.1.23版本進(jìn)行分析,執(zhí)行路由調(diào)度的代碼如下:


其中使用了$this->app->controller方法來(lái)實(shí)例化控制器,然后調(diào)用實(shí)例中的方法。跟進(jìn)controller方法:


其中通過(guò)parseModuleAndClass方法解析出$module和$class,然后實(shí)例化$class。
而parseModuleAndClass方法中,當(dāng)$name以反斜線\開(kāi)始時(shí)直接將其作為類名。利用命名空間的特點(diǎn),如果可以控制此處的$name(即路由中的controller部分),那么就可以實(shí)例化任何一個(gè)類。
接著,我們?cè)偻乜绰酚山馕龅拇a。其中route/dispatch/Url.php:: parseUrl方法調(diào)用了route/Rule.php:: parseUrlPath來(lái)解析pathinfo中的路由信息
代碼比較簡(jiǎn)單,就是使用/對(duì)$url進(jìn)行分割,未進(jìn)行任何過(guò)濾。
其中的路由url從Request::path()中獲取

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








回復(fù)

使用道具 舉報(bào)

 點(diǎn)擊右側(cè)快捷回復(fù)  

本版積分規(guī)則

小黑屋|資源共享吧 ( 瓊ICP備2023000410號(hào)-1 )

GMT+8, 2025-1-5 07:38 , Processed in 0.054592 second(s), 16 queries , MemCached On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回復(fù) 返回頂部 返回列表