漏洞概述
北京时间8月22日,Struts官方公开了漏洞S2-057(CVE-2018-11776)。该漏洞可能在两种情况下被触发:
1.当没有为底层xml配置中定义的结果设置namespace 值,并且其上部操作配置没有namespace或通配namespace时,可能构成 RCE攻击。
2.当使用没有 value和action集的url标签时,并且其上层操作配置没有或通配namespace时,也可能构成 RCE 攻击。
参考链接:
https://cwiki.apache.org/confluence/display/WW/S2-057
影响范围
受影响版本
Struts2.3 – 2.3.34
Struts2.5 – 2.5.16
不受影响版本
Struts 2.3.35
Struts 2.5.17
漏洞排查1.版本检测
此漏洞产生于低版本的Struts组件,当应用系统引入相关组件时,将存在被攻击者远程攻击的风险。建议由应用开发人员排查引入组件的版本是否处于受影响范围之内。
查看Maven配置文件pom.xml中关于组件的版本。如:
<dependency>>
<groupId>>org.apache.struts</groupId>>
<artifactId>>struts2-core</artifactId>>
<version>>2.5.13</version>>
</dependency>>
若红字所示版本在受影响范围内,则请用户尽快升级Struts2至最新版本,以保证长期有效的防护。
2.组件名检测
Linux系统下可使用以下命令查找当前使用的struts2-core包,通过查看其文件名,判断当前版本。
find / -name struts2-core-*.jar
若版本号在受影响范围内,则请用户尽快升级至最新版本。
漏洞防护
官方已在最新版本中修复了此漏洞,请用户尽快将Struts升级至官方修复版本,2.3.的用户请升级至2.3.35;2.5.的用户请升级至2.5.17。开发人员可通过配置Maven或Gradle的方式对应用升级并编译发布,也可手动下载最新Struts框架进行替换。
Maven配置
<!--
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->>
<dependency>>
<groupId>>org.apache.struts</groupId>>
<artifactId>>struts2-core</artifactId>>
<version>>2.5.17</version>>
</dependency>>
Gradle配置
//
// https://mvnrepository.com/artifact/org.apache.struts/struts2-core
compile group: 'org.apache.struts', name: 'struts2-core', version: '2.5.17'
官方下载链接:
Struts2.3.35
http://mirrors.hust.edu.cn/apache/struts/2.3.35/struts-2.3.35-all.zip
Struts2.5.17
http://mirrors.hust.edu.cn/apache/struts/2.5.17/struts-2.5.17-all.zip