一次获取RCE以及提权到root权限的渗透过程
一次获取RCE以及提权到root权限的渗透过程
迪哥讲事 2025-05-16 12:30
本文是关于
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”
的有效负载。
1 |
|
但正如预料的那样,它被应用防火墙阻止了,并将重定向到一个
bot
机器页面 。
当这样的事情发生在作者身上时,正如前面指出的那样,知道哪些参数易受攻击,其中之一是在上述请求中使用的
“redirect”
参数。
“redirect
”,是的,你觉得它是正确的,让我们尝试在这里重定向,只是把它重定向到http://www.goal.com
正如你所看到的那样,作者得到了
302
重定向到位置http://www.goal.com ,所以之前的
ifconfig
命令有效载荷被阻止了,这个重定向方法,给了作者一个绕过防火墙的思路,所以,将上面的有效负载进行修改如下:
1 |
|
并发起请求:
下面显示了能够绕过防火墙并获得运行的
“ifconfig”
命令输出信息:
下一个目标是获得服务器的远程
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文件位置
第二步
–
将authorized_keys从受害者服务器复制到攻击者服务器上
第三步
–
将修改后的authorized_keys从攻击者服务器复制回来,通过读取
id_rsa.pub
获得shell.
最后一步
– SSH
在攻击者机器上使用反向隧道,所以运行了如下命令行:
能够获得服务器的远程
shell,
但没以root登陆的权限,这就意味着只有有限的权利访问文件和命令执行。
现在为了获取以root用户身份登录的权限,作者首先查看当前受害机器上运行的内核版本是什么:
因此发现了内核版本是
2.6.32
,通过google查找到利用的
CVE
,该CVE可
容易进行账户提权和漏洞利用
—-https
: //github.com/realtalk/cve-2013-2094 ,最终够获得root用户权限。
这就是如何通过利用
apache strut 2
漏洞和内核版本漏洞利用结合来获取以root用户服务器的远程
shell
。
往期回顾
如何绕过签名校验
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款