一、 漏洞解析
Struts2是第二代基于Model-View-Controller (MVC)模型的java企业级web应用框架。
近日,Struts 2再次曝光高危漏洞,Apache Struts2存在S2-045远程代码执行漏洞。远程攻击者利用该漏洞可直接取得网站服务器控制权。
(漏洞影响版本:Struts2.3.5-Struts2.3.31, Struts2.5-Struts2.5.10)
2016年出现高危漏洞:
l 互联网上披露了Apache Struts 2 S2-032远程代码执行漏洞(CNVD-2016-02506,CVE-2016-3081 )的利用代码,据CNVD初步测试,远程攻击者利用漏洞可在开启动态方法调用功能的Apache Struts 2服务器上执行任意代码,取得网站服务器控制权。
(漏洞影响版本:Struts 2.3.20 - 2.3.28 (除2.3.20.3和2.3.24.3以外)版本)。
l 在2.3.28及之前版本中,devMode开启时,DebuggingInterceptor类会检测提交的debug参数是否包含console、command、browser这三个MODE。通过分析代码发现,command、browser这两个MODE调用了stack.findValue方法,可构造特定数据作为ognl表达式执行,使得Apache Struts S2-008漏洞一直延续到2.3.28版本。
(漏洞影响版本:Struts 2.1.0--2.5.1且开启devMode模式的用户)。
二、漏洞危害
A. 恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令;
B. 恶意攻击者可利用漏洞直接获取应用系统的Webshell,甚至获取操作系统以及数据库的权限;
C. 由于Struts2应用较为广泛,且攻击利用代码已经公开,已导致互联网上大规模攻击的出现。
【根据CNVD秘书处抽样测试结果,互联网上采用Apache Struts 2框架的网站(不区分Struts版本,样本集>500,覆盖政府、高校、企业)受影响比例为60.1%。】
三、修复措施
A. 安全检测
查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,
更新至Strusts2.3.32或者Strusts2.5.10.1,或使用第三方的防护设备进行防护。
临时解决方案:删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。
B. 升级版本
可升级版本至Apache Struts 2.3.32 或 Apache Struts 2.5.10.1以消除漏洞影响。
(官网链接:S2-045 - Apache Struts 2 Documentation - Apache Software Foundation https://cwiki.apache.org/confluence/display/WW/S2-045)
C. 主动检测
除了升级struts版本外,为有效防护漏洞攻击,建议用户采取主动检测、网络侧防护的方法防范黑客攻击。
使用互盟漏洞扫描,加强信息安全保障,以安全保发展,以发展促安全。
【参考链接:国家信息安全漏洞共享平台 http://www.cnvd.org.cn/flaw/show/CNVD-2017-02474】