閱讀708 返回首頁    go 支付寶


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

7月7日,Apache Struts官方發布了漏洞編號為:S2-048的高危漏洞公告。

阿裏雲安全團隊2小時內發布官方安全建議,跟蹤S2-048的全球攻擊趨勢,並對不同漏洞版本進行了對比分析。


image

目前,

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

阿裏雲安全團隊對S2-048在全球範圍內的攻擊源進行分析。

image


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

在SaveGangsterAction.java的文件裏看的有execute方法的實現,其中gforn.getName()是攻擊者可控的,gforn.getName()的值可以帶入messages結構中;


image


在Struts1Action.java裏可以看到,其實是調用SaveGangsterAction.execute方法,然後再調用getText(msg.getKey())

getText方法會把actionmessages傳遞給com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage ,

其中又調用了com.opensymphony.xwork2.util.TextParseUtil.translateVariables,它用來調用OGNL 表達式用處理字符串表達式;

image

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


image


漏洞測試生效。

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


image


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

image

  • 及時檢測是否受到漏洞影響:使用的Struts是 2.3.x版本,是否啟用了struts2-struts1-plugin插件。使用阿裏雲雲盾態勢感知進行漏洞檢測。
  • 阿裏雲上用戶可以禁用、關閉(刪除)\struts-2.3.x\apps\struts2-showcase.war包; 建議關閉devmod模式(請根據自身業務情況決定是否關閉)。
  • 開發者可以使用resourcekeys替代,將原始消息直接傳遞給ActionMessage的方式,以此作為根治措施。

正確方式:

messages.add("msg",new ActionMessage("struts1.gangsterAdded", gform.getName()))

錯誤方式:

messages.add("msg",new ActionMessage("Gangster " + gform.getName() + " wasadded"))
  • 建議將Struts2升級到最新版本2.5.10.1。
  • 使用阿裏雲雲盾WAF對該漏洞進行防禦。

原文鏈接

最後更新:2017-07-10 10:32:43

  上一篇:go  初創企業如何做高效持續交付
  下一篇:go  推薦5款開源的協同辦公軟件