本文共 1294 字,大约阅读时间需要 4 分钟。
7月7日,Apache Struts官方发布了漏洞编号为:S2-048的高危漏洞公告。
阿里云安全团队2小时内发布官方安全建议,跟踪S2-048的全球攻击趋势,并对不同漏洞版本进行了对比分析。
目前,阿里云云盾态势感知已支持检测,WAF默认支持防御。
一、影响范围
如果在ApacheStruts 2.3.x系列中启用了struts2-struts1-plugin插件,会受到该漏洞的影响。
二、攻击源分析
阿里云安全团队对S2-048在全球范围内的攻击源进行分析。
其中,有3/4的攻击源来自国内的北京、上海地区,1/4来自海外(美国、韩国)和香港地区。三、原理及利用方法分析
在SaveGangsterAction.java的文件里看的有execute方法的实现,其中gforn.getName()是攻击者可控的,gforn.getName()的值可以带入messages结构中;
在Struts1Action.java里可以看到,其实是调用SaveGangsterAction.execute方法,然后再调用getText(msg.getKey())
getText方法会把actionmessages传递给com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage ,
其中又调用了com.opensymphony.xwork2.util.TextParseUtil.translateVariables,它用来调用OGNL 表达式用处理字符串表达式;
使用EL表达式简单测试$(1>2);
漏洞测试生效。
四、漏洞对比分析
阿里云安全团队将S2-045及S2-048漏洞的利用原理做了对比分析。
对比S2-045和S2-048的漏洞攻击次数发现,S2-045的危害程度和关注度比S2-048高;在S2-048漏洞爆发后,由于未公开POC和利用工具,当天被利用攻击的几率比较小,安全风险相对较低。
五、安全建议
正确方式:
messages.add("msg",new ActionMessage("struts1.gangsterAdded", gform.getName()))
错误方式:
messages.add("msg",new ActionMessage("Gangster " + gform.getName() + " wasadded"))
转载地址:http://tlaga.baihongyu.com/