教你從防護(hù)角度看Thinkphp歷史漏洞

下面由thinkphp框架開(kāi)發(fā)教程欄目給大家介紹從防護(hù)角度看thinkphp歷史漏洞,希望對(duì)需要的朋友有所幫助!

一、前言

19年初,網(wǎng)上公開(kāi)了2個(gè)thinkphp5的RCE漏洞,漏洞非常好用,導(dǎo)致有很多攻擊者用掃描器進(jìn)行全網(wǎng)掃描。我們通過(guò)ips設(shè)備持續(xù)觀察到大量利用這幾個(gè)漏洞進(jìn)行批量getshell的攻擊流量,本文主要從流量角度簡(jiǎn)要分析和利用thinkphp進(jìn)行攻擊的全網(wǎng)掃描和getshell流量痕跡。

二、Thinkphp RCE漏洞和掃描流量

2.1漏洞原理回顧

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

2.1.15.0.x版本漏洞

原理在于Thinkphp處理請(qǐng)求的關(guān)鍵類(lèi)為Request(thinkphp/library/think/Request.php),該類(lèi)可以實(shí)現(xiàn)對(duì)http請(qǐng)求的一些設(shè)置

Thinkphp支持配置“表單偽裝變量”,默認(rèn)情況下該變量值為_(kāi)method,因此在method()中,可以通過(guò)“表單偽裝變量”進(jìn)行變量覆蓋實(shí)現(xiàn)對(duì)該類(lèi)任意函數(shù)的調(diào)用,并且$_POST作為函數(shù)的參數(shù)傳入。可以構(gòu)造請(qǐng)求來(lái)實(shí)現(xiàn)對(duì)Request類(lèi)屬性值的覆蓋,例如覆蓋Filter屬性(filter屬性保存了用于全局過(guò)濾的函數(shù)),從而實(shí)現(xiàn)代碼執(zhí)行。? ? ??

2.1.25.1.x-5.2.x版本漏洞

與5.0.x版本漏洞相似,漏洞點(diǎn)都存在于Request(thinkphp/library/think/Request.php)類(lèi)中,其中:

教你從防護(hù)角度看Thinkphp歷史漏洞

$method變量是$this->method,其等同于POST的“_method”參數(shù)值,可以利用覆蓋$filter的屬性值(filter屬性保存了用于全局過(guò)濾的函數(shù)),從而實(shí)現(xiàn)代碼執(zhí)行。

該漏洞觸發(fā)時(shí)會(huì)出現(xiàn)警告級(jí)別的異常導(dǎo)致程序終止,此時(shí)需要設(shè)置忽略異常提示,在public/index.php中配置error_reporting(0)忽略異常繼續(xù)運(yùn)行代碼,如下圖:

教你從防護(hù)角度看Thinkphp歷史漏洞

2.2Thinkphp漏洞全網(wǎng)掃描

從流量角度來(lái)看,利用Thinkphp漏洞就是發(fā)一個(gè)http包。我們發(fā)現(xiàn)某黑客的掃描器是先寫(xiě)一個(gè)簡(jiǎn)單的一句話作為指紋,后續(xù)再訪問(wèn)這個(gè)文件看是否返回指紋信息,訪問(wèn)成功說(shuō)明shell已經(jīng)成功,基本就是發(fā)兩個(gè)http包,掃描器記下成功寫(xiě)入的shell的網(wǎng)站ip和url然后手工用菜刀連接,進(jìn)行后續(xù)操作。

從IPS設(shè)備日志和人工驗(yàn)證,攻擊者的攻擊步驟包含2步:1、全網(wǎng)掃描發(fā)送exp,根據(jù)指紋識(shí)別是否getshell;2、菜刀連接,進(jìn)行遠(yuǎn)程控制;

2.2.1全網(wǎng)掃描發(fā)送exp

一般掃描日志都是遍歷B段或C段,時(shí)間也比較密集,某個(gè)被記錄的掃描器日志片段如下,

教你從防護(hù)角度看Thinkphp歷史漏洞

具備3個(gè)特征:1、目的ip為相同C段或者B段,2、端口比較固定,3掃描時(shí)間非常密集

掃描器發(fā)送的確認(rèn)shell已經(jīng)寫(xiě)入成功的報(bào)文,采用掃描器專用的指紋,所以ips是沒(méi)有這種檢測(cè)規(guī)則的。

2.2.2菜刀連接

在攻擊者手工菜刀連接被攻陷的站點(diǎn)時(shí),也會(huì)被ips檢測(cè)到,通過(guò)上下文關(guān)聯(lián)溯源到thinkphp漏洞作為攻擊者的突破口。挑選幾個(gè)當(dāng)時(shí)記錄的典型案例:

被攻陷的鄭州服務(wù)器1(122.114.24.216):

教你從防護(hù)角度看Thinkphp歷史漏洞

該網(wǎng)站確實(shí)為thinkphp5發(fā)開(kāi),當(dāng)時(shí)webshell木馬還在服務(wù)器上未被刪除??梢酝ㄟ^(guò)服務(wù)器訪問(wèn)黑客上傳的該木馬,指紋信息為baidu,掃描器用這個(gè)指紋來(lái)自動(dòng)判斷getshell成功并記錄url。

教你從防護(hù)角度看Thinkphp歷史漏洞

被攻陷的四川服務(wù)器(182.151.214.106):

被攻陷的四川服務(wù)器(182.151.214.106):

這個(gè)案例木馬雖然被清除,但是當(dāng)時(shí)服務(wù)器還是可以連通,服務(wù)器也是thinkphp框架,用戶名疑似chanpei

教你從防護(hù)角度看Thinkphp歷史漏洞

設(shè)備記錄了黑客連接木馬并執(zhí)行網(wǎng)絡(luò)查詢命令時(shí)的報(bào)文,得到的信息與以上報(bào)錯(cuò)信息一致。并且看得出服務(wù)器也所處為內(nèi)網(wǎng)的一臺(tái)機(jī)器,截圖看到至少該網(wǎng)絡(luò)包含192.168.9.0和192.168.56.0兩個(gè)子網(wǎng),如下圖:

教你從防護(hù)角度看Thinkphp歷史漏洞

被攻陷的美國(guó)服務(wù)器(161.129.41.36):

美國(guó)這臺(tái)服務(wù)器上的webshell也被清理掉了,通過(guò)設(shè)備抓包,發(fā)現(xiàn)有黑客使用了相同的webshell木馬,即 x.php,懷疑是同一批黑客。

教你從防護(hù)角度看Thinkphp歷史漏洞

黑客在瀏覽美國(guó)服務(wù)器上x(chóng).php(webshell)文件內(nèi)容時(shí),設(shè)備記錄了x.php的密碼為xiao,并且標(biāo)志位也是baidu。

教你從防護(hù)角度看Thinkphp歷史漏洞

可以看出利用這兩個(gè)Thinkphp高危RCE漏洞,當(dāng)時(shí)是掃到了大量的服務(wù)器漏洞的。

三、總結(jié)

本文結(jié)合Thinkphp的歷史漏洞原理,分享了發(fā)現(xiàn)利用Thinkphp漏洞攻擊成功的案例。目前設(shè)備每天檢測(cè)到最多的日志就是weblogic、struts2、thinkphp這類(lèi)直接getshell的日志或者ssh rdp暴力破解日志。很多攻擊者一旦發(fā)現(xiàn)最新的exp就裝備到自己的掃描器上面全網(wǎng)一陣掃,一天下來(lái)可能就是若干個(gè)shell。所以出現(xiàn)高危漏洞后建議用戶及時(shí)打上補(bǔ)丁,配置好安全設(shè)備策略,從實(shí)際幾個(gè)案例來(lái)看,掃描器的風(fēng)險(xiǎn)一直都在。如果能配置好網(wǎng)站禁止ip直接訪問(wèn),能在某種程度上緩解一下這種威脅。由于水平有限,歡迎大家指出文中的錯(cuò)誤和交流指教

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享