用途:这是一份不安全反序列化的攻击手册,用于安全测试与防御研究,帮助使用者识别经 ObjectInputStream、unserialize、pickle 等接口反序列化不可信数据的应用,并选择可用的利用链。
主要能力:涵盖流量指纹识别(Java 的 ac ed 00 05 / rO0AB、.NET 的 AAEAAD、Python pickle 的 80 03/80 04、PHP 的 O:N:"ClassName"、Ruby 的 04 08);Java 利用链与版本兼容矩阵(CommonsCollections 1–7、Spring、Groovy、Hibernate、Jdk7u21、URLDNS)及工具 ysoserial,含 Shiro rememberMe、WebLogic T3/IIOP/XMLDecoder、RMI Registry、JDK 版本约束(如 8u191 后远程类加载受限);PHP 魔术方法链、PHPGGC 与 Phar 反序列化触发函数列表;Python pickle、reduce 与 RestrictedUnpickler 绕过;Ruby Marshal 与 YAML.load 利用链;.NET BinaryFormatter、ViewState、JSON.NET 及 ysoserial.net;Node.js node-serialize、funcster、cryo。
使用方式:按资料提供的命令运行,例如 java -jar ysoserial.jar URLDNS "http://TOKEN"、java -jar ysoserial.jar CommonsCollections1 "id"、phpggc Laravel/RCE1 system id、phpggc -p phar -o exploit.phar Monolog/RCE1 system id;Shiro 使用硬编码密钥对 payload 做 AES-CBC 加密后写入 rememberMe Cookie。检测方法依据请求/响应中的二进制或编码特征判断语言与框架,再匹配对应利用链。
适用场景:授权渗透测试、漏洞验证、CTF、安全教学与企业防御评估。
限制:仅限合法授权范围使用;利用链成败取决于目标 classpath 与版本;JDK 高版本可能阻断远程类加载;安全修复建议采用 JEP 290 过滤器、类白名单、避免对不可信数据反序列化、改用 JSON/Protobuf、用 json_decode 替代 unserialize、使用 yaml.safe_load。