天天看點

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

7月7日,apache struts官方釋出了漏洞編号為:s2-048的高危漏洞公告。

阿裡雲安全團隊2小時内釋出官方安全建議,跟蹤s2-048的全球攻擊趨勢,并對不同漏洞版本進行了對比分析。

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

目前,阿裡雲雲盾态勢感覺已支援檢測,waf預設支援防禦。

一、影響範圍

如果在apachestruts 2.3.x系列中啟用了struts2-struts1-plugin插件,會受到該漏洞的影響。

二、攻擊源分析

阿裡雲安全團隊對s2-048在全球範圍内的攻擊源進行分析。

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

其中,有3/4的攻擊源來自國内的北京、上海地區,1/4來自海外(美國、南韓)和香港地區。

三、原理及利用方法分析

在savegangsteraction.java的檔案裡看的有execute方法的實作,其中gforn.getname()是攻擊者可控的,gforn.getname()的值可以帶入messages結構中;

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

在struts1action.java裡可以看到,其實是調用savegangsteraction.execute方法,然後再調用gettext(msg.getkey())

gettext方法會把actionmessages傳遞給com.opensymphony.xwork2.util.localizedtextutil.getdefaultmessage ,

其中又調用了com.opensymphony.xwork2.util.textparseutil.translatevariables,它用來調用ognl 表達式用處理字元串表達式;

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

使用el表達式簡單測試$(1>2);

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

漏洞測試生效。

四、漏洞對比分析

阿裡雲安全團隊将s2-045及s2-048漏洞的利用原理做了對比分析。

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

對比s2-045和s2-048的漏洞攻擊次數發現,s2-045的危害程度和關注度比s2-048高;在s2-048漏洞爆發後,由于未公開poc和利用工具,當天被利用攻擊的幾率比較小,安全風險相對較低。

技術分析 | Struts2 S2-048漏洞:跟蹤攻擊趨勢,成功檢測防禦

五、安全建議

及時檢測是否受到漏洞影響:使用的struts是 2.3.x版本,是否啟用了struts2-struts1-plugin插件。使用阿裡雲雲盾态勢感覺進行漏洞檢測。

阿裡雲上使用者可以禁用、關閉(删除)struts-2.3.xappsstruts2-showcase.war包; 建議關閉devmod模式(請根據自身業務情況決定是否關閉)。

開發者可以使用resourcekeys替代,将原始消息直接傳遞給actionmessage的方式,以此作為根治措施。

正确方式:

錯誤方式:

建議将struts2更新到最新版本2.5.10.1。

使用阿裡雲雲盾waf對該漏洞進行防禦。

<a href="https://mp.weixin.qq.com/s/lpti_oace4-9qpgzp_m6bg">原文連結</a>