漏洞綜述
關于ThinkPHPThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架,其借鑒了國外很多優秀的框架和模式,包括使用面向對象的開發結構和MVC模式,融合了Struts的思想和TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式等。該框架常被用來進行二次開發,國內應用非常廣泛。
漏洞原理
2019年1月11日爆出了ThinkPHP 5.0.x全版本遠程命令執行漏洞,其中5.1和5.2全版本在生產環境下同樣也存在代碼執行漏洞,與5.0.x版本漏洞相似,漏洞點都存在于Request(thinkphp/library/think/Request.php)類中,其中:
$method變量是$this->method,其等同于POST的“_method”參數值,可以利用覆蓋$filter的屬性值(filter屬性保存了用于全局過濾的函數),從而實現代碼執行。
該漏洞觸發時會出現警告級別的異常導致程序終止,此時需要設置忽略異常提示,在public/index.php中配置error_reporting(0)忽略異常繼續運行代碼,如下圖:
通常在生產環境中,項目發布本身就會忽略部分異常使網站穩定運行,所以該漏洞影響范圍較大。
漏洞復現
以Thinkphp 5.1.20版本為例,訪問構造好的Payload可以執行任意代碼,如下執行calc調用計算器出現如下頁面:
影響范圍
ThinkPHP 5.1 – 5.2全版本
處置方法
(1)官方補丁
官方暫未發布漏洞補丁,請關注http://www.thinkphp.cn獲取最新補丁,或者您可以使用如下臨時解決方案:在不影響業務的前提下暫時選擇關閉異常忽略模式。
(2)H3C解決方案
新華三IPS規則庫將在1.0.63版本支持對該漏洞的攔截,建議關注新華三官網及時升級版本并使能相關規則。
聲明
本安全公告僅用來描述可能存在的安全問題,未經新華三大安全允許,不得任意修改或者增減此安全公告內容,不得以任何方式將其用于商業目的。由于傳播、利用此安全公告所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,新華三大安全以及安全公告作者不為此承擔任何責任。新華三大安全擁有對此安全公告的修改和解釋權。如欲轉載或傳播此安全公告,必須保證此安全公告的完整性,包括版權聲明等全部內容。
關于新華三大安全
新華三集團在安全領域擁有十余年的經驗積累,擁有1000多項信息安全領域專利技術,具備業界最全面的安全交付能力,可提供近300款產品和專業的安全咨詢評估服務團隊,并且具備以客戶為導向的需求快速響應能力,從底層信息安全基礎設施到頂層設計為國家和企業提供安全可信的防護。