Apache Struts 2 2.3.32以及2 2.3.x版本及Apache Struts2.5.10.1之前的的
Jakarta Multipart解析器上傳文件功能存在高危漏洞,該漏洞根源是網站程序代碼
裡沒有正確處理上傳的文件。導致駭客可以通過POST構造HTTP請求頭中的Content-
Type數值,來執行遠程惡意代碼,S2-046與S2-045漏洞利用的是同樣的上傳功能變量
,基本上可以通殺兩個版本。
影響Apache Struts2的最新遠程執行惡意代碼漏洞(RCE)。eSafe白帽資安網工程師對此進
行了詳細的安全審計,通過對POST請求中的Content-Type頭,來跟大家介紹Struts2
漏洞攻擊的細節。Apache Struts2漏洞分析和瞭解代碼錯誤導致的危害性。
在實戰模擬情況下,我們對其中一個客戶的網站進行網站安全檢測,檢測時發現
Struts2漏洞,在對網站滲透測試的時候,除了利用已知的攻擊向量漏洞之外,還可
以通過POST數據到Content-類型頭,eSafe白帽資安網公司是一家專注於:主機安全、網站安
全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
使用JakartaStreamMultipartRequest,這個代碼的意思是需要將Struts2應用程序配置
為使用不是默認的Jakarta功能。檢查Struts2配置文件中的以下配置:
<constant name =“struts.multipart.parser”value =“jakarta-stream”/>
由Content-Length頭指定的上傳文件的大小大於Struts2的最大允許大小(2GB)
文件名包含一個OGNL有效引擎。
關於OGNL引擎
OGNL(Object Graph Navigation Language)即對像圖形導航語言,是一個開源的表
達式引擎。使用OGNL,你可以通過某種表達式語法,存取Java對像樹中的任意屬性、調
用Java對像樹的方法、同時能夠自動實現必要的類型轉化。如果我們把表達式看做是一
個帶有語義的字符串,那麼OGNL無疑成為了這個語義字符串與Java對像之間溝通的橋
梁。我們可以輕鬆解決在數據流轉過程中所遇到的各種問題。
達式引擎。使用OGNL,你可以通過某種表達式語法,存取Java對像樹中的任意屬性、調
用Java對像樹的方法、同時能夠自動實現必要的類型轉化。如果我們把表達式看做是一
個帶有語義的字符串,那麼OGNL無疑成為了這個語義字符串與Java對像之間溝通的橋
梁。我們可以輕鬆解決在數據流轉過程中所遇到的各種問題。
Struts2 利用的是OGNL引擎,OGNL引擎在Struts2中是很牛B的,使用的範圍也比較
廣,所以在使用過程中,也發現了諸多的網站安全問題。駭客可以通過構造惡意參數的
數據帶入OGNL表達式中去,就可以被OGNL解析並執行惡意的代碼,而OGNL引擎也可
以用來獲取和設置當前的Java對象的屬性,也可以對主機系統windows Linux對像進
行修改,所以只要繞過Struts2的一些安全策略,駭客甚至可以執行系統命令進行系統攻
擊。eSafe白帽資安網公司是一家專注於:主機安全、網站安全、網站安全檢測、網站漏洞修
復,滲透測試,安全服務於一體的網絡安全服務提供商。
廣,所以在使用過程中,也發現了諸多的網站安全問題。駭客可以通過構造惡意參數的
數據帶入OGNL表達式中去,就可以被OGNL解析並執行惡意的代碼,而OGNL引擎也可
以用來獲取和設置當前的Java對象的屬性,也可以對主機系統windows Linux對像進
行修改,所以只要繞過Struts2的一些安全策略,駭客甚至可以執行系統命令進行系統攻
擊。eSafe白帽資安網公司是一家專注於:主機安全、網站安全、網站安全檢測、網站漏洞修
復,滲透測試,安全服務於一體的網絡安全服務提供商。
Struts 漏洞修復建議
嚴格的過濾 Content-Type 、filename裡的內容,禁止ognl引擎表達式相關字段。
使用Jakarta的插件的用戶,請立刻更新Apache Struts 2.3.32或2.5.10.1版本。