记一次Shiro反序列化渗透测试
字数 1634 2025-08-05 08:19:51

Apache Shiro反序列化漏洞渗透测试实战教学文档

0x00 前言

本文详细记录了一次针对Apache Shiro反序列化漏洞的完整渗透测试过程,包含信息收集、漏洞探测、利用工具开发以及最终获取系统权限的全流程。通过本案例,读者可以学习到Shiro反序列化漏洞的实战利用技巧。

0x01 目标环境

  • 目标系统:后台登录页面系统
  • 防护机制:存在前端加密和防爬机制
  • 开放端口:80(http)、443(https)
  • Web服务器:nginx/1.18.0
  • 框架特征:Apache Shiro(通过Cookie rememberMe特征判断)

0x02 信息收集阶段

1. 基础信息探测

使用工具:

  • Wappalyzer:识别网站平台架构
  • Shodan:获取IP和开放端口
  • Nslookup & 多地ping:确认真实IP和CDN情况

发现:

  • 目标IP:xxx.xxx.1.59
  • 无CDN防护
  • 仅开放80和443端口

2. 端口扫描

使用Nmap扫描结果:

Nmap scan report for xxx.xxx.1.59
PORT     STATE  SERVICE    VERSION
80/tcp   open   http       nginx 1.18.0
443/tcp  open   ssl/https
8080/tcp closed http-proxy

3. 目录扫描

尝试工具:

  • dirsearch:无果(可能被防护机制拦截)
  • dirb:成功发现关键路径

发现关键路径:/xxxx/xxxx/xxxx(路径打码)

0x03 漏洞发现

1. Shiro特征确认

通过添加Cookie测试:

Cookie: rememberMe=1

响应中包含:

Set-Cookie: rememberMe=deleteMe

确认存在Apache Shiro框架

2. 反序列化漏洞验证

使用DNSLOG和默认密钥检测,确认存在Shiro反序列化漏洞

0x04 前端加密分析

1. 加密特征

登录请求中账号密码被加密:

  • 示例:123456 → s2ypDtQpq5F/4xvZUu9HxA==

2. 加密算法分析

通过前端JS分析发现:

  • 加密算法:AES
  • 加密模式:ECB
  • 填充方式:pkcs7
  • 输出格式:base64
  • 密钥:o7H8uIM2O5qv65l2
  • 无偏移量(iv)

3. 开发Burp加密插件

使用jsEncrypter插件自定义AES加密模块:

  1. 创建AES文件夹,包含:

    • crypto-js.js(加密依赖)
    • jsEncrypter_aes.js(加密逻辑)
  2. 关键加密代码:

function jsEncrypt(burp_payload){
    var new_payload;
    // AES加密逻辑实现
    var key = CryptoJS.enc.Utf8.parse("o7H8uIM2O5qv65l2");
    var encrypted = CryptoJS.AES.encrypt(burp_payload, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    new_payload = encrypted.toString();
    return new_payload;
}
  1. 测试验证:
  • 输入:123456
  • 输出:s2ypDtQpq5F/4xvZUu9HxA==
  • 与Burp拦截数据一致,验证成功

0x05 漏洞利用

1. 使用Shiro反序列化回显工具

工具特性:

  • 支持Tomcat 7/8/9回显
  • 支持内存shell写入与卸载
  • 支持自定义UA和Accept-Header
  • 支持AES-GCM加密方式

2. 写入内存shell

配置参数:

  • Shell类型:内存马
  • 连接密码:自定义
  • Header:根据目标环境配置

3. 蚁剑连接配置

关键配置项:

  1. URL需要包含ver参数
  2. 连接类型:CUSTOM
  3. 设置正确的Header

0x06 渗透后操作

  1. 成功获取系统权限
  2. 记录渗透测试痕迹
  3. 生成渗透测试报告
  4. 可一键卸载内存shell(工具功能)

0x07 总结与经验

  1. 工具选择:

    • 不同目录扫描工具效果可能差异很大(dirsearch vs dirb)
    • 及时更新测试字典和工具
  2. Shiro漏洞利用关键点:

    • 准确识别Shiro框架特征
    • 密钥检测要全面
    • 回显工具配置要正确
  3. 前端加密处理:

    • 掌握常见加密算法识别技巧
    • 具备定制化工具开发能力
  4. 推荐工具:

    • Shiro反序列化回显工具(支持多种内存shell)
    • jsEncrypter插件(应对前端加密场景)

0x08 防御建议

  1. 针对Shiro反序列化漏洞:

    • 升级到最新安全版本
    • 修改默认密钥
    • 禁用rememberMe功能(如非必要)
  2. 针对前端加密:

    • 避免在前端暴露加密密钥
    • 使用更安全的加密方案
  3. 通用防护:

    • 限制目录访问权限
    • 部署WAF防护
    • 定期安全审计

通过本案例,我们展示了从信息收集到漏洞利用的完整渗透测试流程,特别强调了Shiro反序列化漏洞的实战利用技巧和前端加密处理方案。这些技术和方法可以应用于类似场景的安全测试工作中。

Apache Shiro反序列化漏洞渗透测试实战教学文档 0x00 前言 本文详细记录了一次针对Apache Shiro反序列化漏洞的完整渗透测试过程,包含信息收集、漏洞探测、利用工具开发以及最终获取系统权限的全流程。通过本案例,读者可以学习到Shiro反序列化漏洞的实战利用技巧。 0x01 目标环境 目标系统:后台登录页面系统 防护机制:存在前端加密和防爬机制 开放端口:80(http)、443(https) Web服务器:nginx/1.18.0 框架特征:Apache Shiro(通过Cookie rememberMe特征判断) 0x02 信息收集阶段 1. 基础信息探测 使用工具: Wappalyzer:识别网站平台架构 Shodan:获取IP和开放端口 Nslookup & 多地ping:确认真实IP和CDN情况 发现: 目标IP:xxx.xxx.1.59 无CDN防护 仅开放80和443端口 2. 端口扫描 使用Nmap扫描结果: 3. 目录扫描 尝试工具: dirsearch:无果(可能被防护机制拦截) dirb:成功发现关键路径 发现关键路径: /xxxx/xxxx/xxxx (路径打码) 0x03 漏洞发现 1. Shiro特征确认 通过添加Cookie测试: 响应中包含: 确认存在Apache Shiro框架 2. 反序列化漏洞验证 使用DNSLOG和默认密钥检测,确认存在Shiro反序列化漏洞 0x04 前端加密分析 1. 加密特征 登录请求中账号密码被加密: 示例:123456 → s2ypDtQpq5F/4xvZUu9HxA== 2. 加密算法分析 通过前端JS分析发现: 加密算法:AES 加密模式:ECB 填充方式:pkcs7 输出格式:base64 密钥:o7H8uIM2O5qv65l2 无偏移量(iv) 3. 开发Burp加密插件 使用jsEncrypter插件自定义AES加密模块: 创建AES文件夹,包含: crypto-js.js(加密依赖) jsEncrypter_ aes.js(加密逻辑) 关键加密代码: 测试验证: 输入:123456 输出:s2ypDtQpq5F/4xvZUu9HxA== 与Burp拦截数据一致,验证成功 0x05 漏洞利用 1. 使用Shiro反序列化回显工具 工具特性: 支持Tomcat 7/8/9回显 支持内存shell写入与卸载 支持自定义UA和Accept-Header 支持AES-GCM加密方式 2. 写入内存shell 配置参数: Shell类型:内存马 连接密码:自定义 Header:根据目标环境配置 3. 蚁剑连接配置 关键配置项: URL需要包含ver参数 连接类型:CUSTOM 设置正确的Header 0x06 渗透后操作 成功获取系统权限 记录渗透测试痕迹 生成渗透测试报告 可一键卸载内存shell(工具功能) 0x07 总结与经验 工具选择: 不同目录扫描工具效果可能差异很大(dirsearch vs dirb) 及时更新测试字典和工具 Shiro漏洞利用关键点: 准确识别Shiro框架特征 密钥检测要全面 回显工具配置要正确 前端加密处理: 掌握常见加密算法识别技巧 具备定制化工具开发能力 推荐工具: Shiro反序列化回显工具(支持多种内存shell) jsEncrypter插件(应对前端加密场景) 0x08 防御建议 针对Shiro反序列化漏洞: 升级到最新安全版本 修改默认密钥 禁用rememberMe功能(如非必要) 针对前端加密: 避免在前端暴露加密密钥 使用更安全的加密方案 通用防护: 限制目录访问权限 部署WAF防护 定期安全审计 通过本案例,我们展示了从信息收集到漏洞利用的完整渗透测试流程,特别强调了Shiro反序列化漏洞的实战利用技巧和前端加密处理方案。这些技术和方法可以应用于类似场景的安全测试工作中。