WF曲速未來消息:php新的漏洞利用技術區塊鏈
WF曲速未來:來自Secarma的安全研究員SamThomas發現了一種新的漏洞利用方式,可以在不使用php函數unserialize()的前提下,引起嚴重的php對象注入漏洞。
前記
前段時間,在美國的BlackHat會議上宣布了一種針對PHP應用程序的新漏洞利用方式。你可以在這篇文章中了解到它。
概要
WF曲速未來消息:來自Secarma的安全研究員Sam Thomas發現了一種新的漏洞利用方式,可以在不使用php函數unserialize()的前提下,引起嚴重的php對象注入漏洞。這個新的攻擊方式被他公開在了美國的BlackHat會議演講上,演講主題為:”不為人所知的php反序列化漏洞”。它可以使攻擊者將相關漏洞的嚴重程度升級為遠程代碼執行。
流包裝
大多數PHP文件操作允許使用各種URL協議去訪問文件路徑,如data://,zlib://或php://。其中一些包裝器通常用于利用遠程文件包含漏洞,攻擊者可以在其中控制文件包含的完整文件路徑。例如,包裝器被注入泄漏源代碼,否則將被執行,或者注入自己的PHP代碼執行:
Phar元數據
但到目前為止,沒有人關注phar://。Phar(PHP Archive)文件的有趣之處在于它們包含序列化格式的元數據。讓我們創建一個Phar文件,并添加一個包含一些數據作為元數據的對象:
我們新創建的test.phar文件現在具有以下內容。我們可以看到我們的對象存儲為序列化字符串。
PHP對象注入
如果現在通過phar://包裝器對我們現有的Phar文件進行文件操作,則其序列化元數據將被反序列化。這意味著我們在元數據中注入的對象將被加載到應用程序中。如果此應用程序具有已命名的類AnyClass,并且具有魔術方法函數__destruct()或__wakeup()定義,則會自動調用這些方法。這意味著我們可以在代碼庫中觸發任何析構函數或喚醒方法。更糟糕的是,如果這些方法函數對我們注入的數據進行操作,那么這可能會導致進一步的漏洞:
漏洞利用
首先,攻擊者必須能夠在目標Web服務器上植入精心制作的Phar文件。而Sam Thomas發現了一些關于如何將Phar文件隱藏到JPG中的好技巧,因此常見的圖像上傳功能已足夠。
到目前為止,這似乎仍不是關鍵,因為攻擊者如果可以控制諸如完整的include(),fopen(),file_get_contents(),file()等文件操作的函數,則可以造成嚴重的漏洞。因此,通常需要在這些函數使用前驗證用戶的輸入。
但是,phar://在任何文件操作中都會觸發反序列化。因此,其他文件操作,例如file_exists()簡單地檢查文件的存在,直到現在被認為對安全風險不太敏感并且受到較少保護。但是現在攻擊者可以注入phar://包裝器并獲得代碼執行:
總結
WF曲速未來提醒:可以通過RIPS的污點分析,然后就可以在PHP文件操作中自動檢測用戶輸入的未經過濾或驗證的信息。這樣,我們即可檢測文件刪除、泄露、寫入、創建、包含(等等)漏洞。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。