首頁  >  文章  >  php框架  >  教你從防護角度看Thinkphp歷史漏洞

教你從防護角度看Thinkphp歷史漏洞

藏色散人
藏色散人轉載
2020-05-10 13:51:342529瀏覽

下面由Thinkphp框架開發教學專欄跟大家介紹從防護角度看Thinkphp歷史漏洞,希望對需要的朋友有幫助!

一、前言

19年初,網路上公開了2個Thinkphp5的RCE漏洞,漏洞非常好用,導致有很多攻擊者用掃描器進行全網掃描。我們透過ips設備持續觀察到大量利用這幾個漏洞進行批量getshell的攻擊流量,本文主要從流量角度簡要分析和利用thinkphp進行攻擊的全網掃描和getshell流量痕跡。

二、Thinkphp RCE漏洞與掃描流量

#2.1漏洞原理回顧

2.1.15.0.x版本漏洞

原理在於Thinkphp處理請求的關鍵類別為Request(thinkphp/library/think/Request.php),該類別可以實作對HTTP請求的一些設定

#Thinkphp支援配置“表單偽裝變數”,預設情況下該變數值為_method,因此在method()中,可以透過“表單偽裝變數”進行變數覆蓋實現對該類別任意函數的調用,並且$_POST作為函數的參數傳入。可以建構請求來實現對Request類別屬性值的覆蓋,例如覆蓋filter屬性(filter屬性保存了用於全域過濾的函數),從而實現程式碼執行。

2.1.25.1.x-5.2.x版本漏洞

與5.0.x版本漏洞相似,漏洞點都存在於Request(thinkphp/library/think/ Request.php)類別中,其中:

教你從防護角度看Thinkphp歷史漏洞

$method變數是$this->method,其等同於POST的「_method」參數值,可以利用覆寫$ filter的屬性值(filter屬性保存了用於全域過濾的函數),從而實現程式碼執行。

該漏洞觸發時會出現警告等級的異常導致程式終止,此時需要設定忽略異常提示,在public/index.php中配置error_reporting(0)忽略異常繼續運行程式碼,如下圖:

教你從防護角度看Thinkphp歷史漏洞

2.2Thinkphp漏洞全網掃描

從流量角度來看,利用Thinkphp漏洞就是發一個http套件。我們發現某駭客的掃描器是先寫一個簡單的一句話作為指紋,後續再訪問這個文件看是否返回指紋信息,訪問成功說明shell已經成功,基本上就是發兩個http包,掃描器記下成功寫入的shell的網站ip和url然後手工用菜刀連接,進行後續操作。

從IPS設備日誌和手動驗證,攻擊者的攻擊步驟包含2步驟:1、全網掃描發送exp,根據指紋識別是否getshell;2、菜刀連接,進行遠端控制;

2.2.1全網掃描發送exp

一般掃描日誌都是遍歷B段或C段,時間也比較密集,某個被記錄的掃描器日誌片段如下,

教你從防護角度看Thinkphp歷史漏洞

有3個特徵:1、目的ip為相同C段或B段,2、連接埠比較固定,3掃描時間非常密集

掃描器發送的確認shell已經寫入成功的封包,採用掃描器專用的指紋,所以ips是沒有這種偵測規則的。

2.2.2菜刀連接

在攻擊者手工菜刀連接被攻陷的網站時,也會被ips偵測到,透過上下文關聯溯源到thinkphp漏洞作為攻擊者的突破口。挑選幾個當時記錄的典型案例:

被攻陷的鄭州伺服器1(122.114.24.216):

教你從防護角度看Thinkphp歷史漏洞

該網站確實為thinkphp5發開,當時webshel​​l木馬還在伺服器上未被刪除。可以透過伺服器存取駭客上傳的該木馬,指紋資訊為baidu,掃描器用這個指紋來自動判斷getshell成功並記錄url。

教你從防護角度看Thinkphp歷史漏洞

被攻陷的四川伺服器(182.151.214.106):

被攻陷的四川伺服器(182.151.214.106):

這個案例木馬雖然被清除,但是當時伺服器還是可以連通,伺服器也是thinkphp框架,使用者名稱疑似chanpei

教你從防護角度看Thinkphp歷史漏洞

裝置記錄了駭客連接木馬並執行網路查詢指令時的報文,得到的資訊與以上報錯資訊一致。並且看得出伺服器也所處為內網的一台機器,截圖看到至少該網路包含192.168.9.0和192.168.56.0兩個子網,如下圖:

教你從防護角度看Thinkphp歷史漏洞

被攻陷的美國伺服器(161.129.41.36):

美國這台伺服器上的webshel​​l也被清理掉了,透過裝置抓包,發現有駭客使用了相同的webshel​​l木馬,即x.php,懷疑是同一批駭客。

教你從防護角度看Thinkphp歷史漏洞

駭客在瀏覽美國伺服器上x.php(webshel​​l)檔案內容時,裝置記錄了x.php的密碼為xiao,且標誌位元也是baidu。

教你從防護角度看Thinkphp歷史漏洞

可以看出利用這兩個Thinkphp高危險群RCE漏洞,當時是掃到了大量的伺服器漏洞的。

三、總結

本文結合Thinkphp的歷史漏洞原理,分享了發現利用Thinkphp漏洞攻擊成功的案例。目前設備每天偵測到最多的日誌就是weblogic、struts2、thinkphp這類直接getshell的日誌或是ssh rdp暴力破解日誌。很多攻擊者一旦發現最新的exp就裝備到自己的掃描器上面全網一陣掃,一天下來可能就是若干個shell。所以出現高風險漏洞後建議用戶及時打上補丁,配置好安全設備策略,從實際幾個案例來看,掃描器的風險一直都在。如果能配置好網站禁止ip直接訪問,能在某種程度上緩解一下這種威脅。由於程度有限,歡迎大家指出文中的錯誤和交流指教

以上是教你從防護角度看Thinkphp歷史漏洞的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:freebuf.com。如有侵權,請聯絡admin@php.cn刪除