ysoserial 工具详解
0x01 ysoserial 是什么
ysoserial 是一款用于生成 Java 反序列化漏洞利用 payload 的开源工具,由安全研究人员 frohoff 等人维护。该工具通过内置多种 Java 反序列化 Gadget Chain(利用链),可以在目标应用对不可信数据进行反序列化时,触发预期之外的危险行为,最典型的结果是 远程命令执行(RCE)。ysoserial 本身并不直接发起攻击,而是专注于 “恶意序列化对象的构造”,通常作为 Java 反序列化攻击链中的核心 payload 生成组件。
0x02 ysoserial 解决的核心问题
在没有 ysoserial 之前,研究者需要手工编写复杂的 Java 代码来拼接 gadget 链,调试成本高、复用性差。ysoserial 将这一过程工具化,解决了以下问题:
1.Gadget 链构造复杂:将大量已知可利用链封装为现成模块。
2.Payload 标准化输出:统一输出为 Java 序列化字节流,便于注入。
3.漏洞验证效率低:可快速验证目标是否存在反序列化漏洞。
4.研究复现门槛高:降低 Java 反序列化漏洞学习和复现成本。
0x03 ysoserial 的整体架构思想
从攻击链角度看,ysoserial负责:"从命令→恶意对象→序列化数据",而不负责网络传输或服务端触发。其设计逻辑为:
1.每一种 Gadget 链都是一个独立模块,对应一类依赖库或 JDK 版本。
2.统一入口:通过命令行参数指定 Gadget 类型和执行命令。
3.利用 Java 反射机制,在运行时动态构造恶意对象。
4.最终输出序列化字节流,不关心 payload 的投递方式。
0x04 ysoserial 的主要模块
Commons Collections 系列
- 代表:CommonsCollections1 ~ CommonsCollections7
- 依赖:Apache Commons Collections
- 特点:最经典、最常见,利用 Transformer 链触发 Runtime.exec
JDK 原生链
- 代表:Jdk7u21、Jdk8u20
- 依赖:特定 JDK 版本
- 特点:不依赖第三方库,但对 Java 版本要求严格
中间件/框架链
- 代表:Spring1、Groovy1、Hibernate1
- 依赖:目标系统已引入相应框架
- 特点:真实生产环境命中率高
产品定向链
- 代表:Weblogic1、JBossInterceptors1
- 特点:针对特定企业级中间件设计
0x05 ysoserial 的典型使用场景
1.Java 反序列化漏洞验证:用于确认接口是否存在反序列化入口并可被利用。
2.中间件漏洞复现:如 WebLogic、JBoss、Spring 等历史反序列化漏洞。
3.JNDI 攻击链配合:作为 LDAP / RMI 返回的反序列化 payload,与 Marshalsec、JNDIExploit 配合使用。
4.教学与研究:分析 gadget 链调用过程,加深对反序列化机制的理解。
0x06 ysoserial全模块命令
//查看所有支持的 Gadget 链
java -jar ysoserial.jar
//生成指定 Gadget 的 payload
java -jar ysoserial.jar CommonsCollections1 "whoami"
//输出为文件用于投递
java -jar ysoserial.jar CommonsCollections1 "touch /tmp/pwned" > payload.ser
常见使用组合:
ysoserial:生成反序列化payload;
Marshalsec/JNDIExploit:提供JNDI服务;
目标服务:触发反序列化执行。
0x07 工具下载
链接:https://pan.quark.cn/s/b7706127d028
提取码:iPdp

浙公网安备 33010602011771号