這個分析寫的我有點汗顏,強烈建議抵制struts2,改為更加可靠的springmvc。
背景是,struts2預設處理multipart報文的解析器是jakarta,是這個元件出現了問題。
該元件定義在了struts-default.xml中,因此,只要不修改parser,並且版本在受影響範圍內,肯定是有問題的。
令我非常疑惑的是,乙個content-type怎麼就能用ognl解析並執行的呢?所以下面來單步除錯一下。
問題出現在org.apache.struts2.dispatcher.multipart.jakartamultipartrequest類中的builderrormessage方法裡:
傳入了非法的content-type之後會引發jakartamultipartrequest類報錯,因此會來到這個方法去處理錯誤資訊,進入findtext函式:
又呼叫了getdefaultmessage方法,繼續:
關鍵在這個translatevariable方法裡,進入方法定義你就會發現貓膩了。。。。。
居然將錯誤資訊當做ognl表示式執行了,當然,是提取出有效的部分,注意到$以及 %,exp上是%,實際上$也可以,不知道會不會繞過某些waf呢。
最終在ognltextparser的evaluate方法執行了命令,非常奇怪的邏輯。。。。。為什麼非要解析錯誤資訊裡的ognl呢
最後,不管是出於什麼目的洩露poc都是無恥的行徑!!!
struts2遠端命令執行漏洞S2 045
struts2遠端命令執行漏洞s2 045 apache struts 2被曝存在遠端命令執行漏洞,漏洞編號s2 045,cve編號cve 2017 5638,在使用基於jakarta外掛程式的檔案上傳功能時,有可能存在遠端命令執行,導致系統被黑客入侵,漏洞評級為 高危。漏洞詳情 惡意使用者可在上傳...
S2 045漏洞利用工具 解決方案
簡單的重複造乙個輪子,漏洞危害蠻大的 影響版本 struts 2.3.5 struts 2.3.31,struts 2.5 struts 2.5.10 僅供學習測試使用,嚴禁非法操作!修復建議 1.很官方的解釋 公升級struts2版本 2.做過濾器 獲取content type的值,如果包含了某些...
struts2遠端命令執行漏洞S2 045
struts2遠端命令執行漏洞s2 045 apache struts 2被曝存在遠端命令執行漏洞,漏洞編號s2 045,cve編號cve 2017 5638,在使用基於jakarta外掛程式的檔案上傳功能時,有可能存在遠端命令執行,導致系統被黑客入侵,漏洞評級為 高危。漏洞詳情 惡意使用者可在上傳...