瑞星发布紧急安全警报:Struts 2再爆高危远程漏洞
2017 年 3 月 7 日,瑞星安全研究院对外发布紧急安全警报,Apache Struts2 被曝存在高危远程命令执行漏洞,漏洞编号为S2-045,CVE编号CVE-2017-5638。据介绍,本次爆出的漏洞触发点主要存在使用基于Jakarta插件的文件上传功能,经过瑞星安全专家验证,该漏洞可直接执行系统命令,一旦被黑客执行恶意破坏命令,可能对服务器造成的是永久性破坏。瑞星提醒广大网站运维人员,及时验证漏洞情况,及时采取有效防范措施,以免遭受严重影响。 Struts是Apache基金会Jakarta项目组的一个开源项目,它采用MVC 模式,帮助java开发者利用J2EE开发 Web 应用。目前,Struts广泛应用于大型互联网企业、政府、金融机构等网站建设,并作为网站开发的底层模板使用。因此,瑞星安全专家再次提醒广大网站管理员,尽快将Struts2 升级到安全版本。 早在 2013 年,瑞星就率先公布Struts2 的高危漏洞,并提供应急响应安全服务。针对此次的S2-045,广大网站管理员可以尽快升级,如有问题可以随时与瑞星公司进行联系,获取帮助。针对该漏洞目前造成的影响,瑞星会持续跟进,并及时向社会公布结果。 漏洞详情漏洞编号:S2-045 CVE编号:CVE-2017-5638 漏洞类型:远程代码执行 漏洞级别:高危 漏洞风险:黑客通过利用漏洞可以实现远程命令执行。 影响版本:struts2.3.5– struts2.3.31 , struts2.5–struts2.5.10。 漏洞描述:攻击者可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令 漏洞分析漏洞存在的文件1. \core\src\main\java\org\apache\struts2\dispatcher\multipart\MultiPartRequestWrapper.java 2. \core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaMultiPartRequest.java 3. \core\src\main\java\org\apache\struts2\dispatcher\multipart\JakartaStreamMultiPartRequest.java 修复方法 if (LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, new Object[0]) == null) { return LocalizedTextUtil.findText(this.getClass(), "struts.messages.error.uploading", defaultLocale, null, new Object[] { e.getMessage() }); } else { return LocalizedTextUtil.findText(this.getClass(), errorKey, defaultLocale, null, args); } 漏洞利用条件1. 基于Jakarta(Jakarta Multipart parser)插件的文件上传功能 2. 恶意攻击者构造Content-Type的值 修复建议1. 修复Jakarta文件上传插件或者是存在漏洞的Struts2 版本请升级至Struts 2 安全版本 2. 通过Servlet过滤器验证Content-Type值 3. 添加waf规则进行拦截恶意攻击 参考文档https://cwiki.apache.org/confluence/display/WW/S2-045 https://github.com/apache/struts 瑞星验证结果瑞星针对部分授权用户,通过使用struts默认扩展*.action进行搜索,从搜索结果中随机选出url进行漏洞验证。从案例返回的结果信息中可以看出通过该漏洞可直接执行系统命令,从命令执行反馈的结果可以看出很多的网站都是基于root(linux系统最高权限用户)权限运行,一旦执行恶意破坏命令如:rm删除命令,可对服务器造成的是永久性破坏 。 (编辑:ASP站长网) |