用途:在获得书面授权的渗透测试中,识别并利用 Java、PHP、Python、.NET 应用的反序列化漏洞,验证远程代码执行(RCE)影响。
适用时机:应用处理序列化数据(Cookie、API 参数、消息队列)时;在 HTTP 流量中发现 Java 序列化标记(二进制 0xACED0005、Base64 rO0AB、Gzip+Base64 H4sIAAAAAAAA)时;测试对用户输入使用 unserialize() 的 PHP 应用;评估使用 BinaryFormatter、ObjectStateFormatter 或 ViewState 的 .NET 应用;评估使用 pickle(Python)、Marshal(Ruby)或 YAML 反序列化的应用。
前置条件:书面渗透测试授权(含 RCE 测试范围);ysoserial、ysoserial.net、PHPGGC 工具链;Burp Suite Professional 及 Java Deserialization Scanner 扩展;Java 运行时;Collaborator/interactsh 用于带外确认。
主要流程:一、在流量中识别序列化数据,常见位置包括会话 Cookie、隐藏表单字段(__VIEWSTATE、__EVENTVALIDATION)、API 请求/响应体、WebSocket 消息、消息队列与缓存条目。二、用 ysoserial 测试 Java:先用 URLDNS gadget 做安全检测,再尝试 CommonsCollections、Spring、Hibernate 等 gadget 链生成载荷。三、用 PHPGGC 测试 PHP 框架(Laravel、Symfony、Monolog、Guzzle 等)。四、用 ysoserial.net 测试 .NET,检查 ViewState MAC 是否启用。五、构造 pickle 恶意载荷测试 Python,并检查 PyYAML 反序列化。六、通过带外回调或时间盲注确认执行,记录 gadget 链、受影响库版本与影响链。
关键概念:序列化、反序列化、gadget chain、魔术方法(PHP 的 __wakeup/__destruct、Java 的 readObject)、ViewState、pickle、URLDNS gadget。常用工具有 ysoserial、ysoserial.net、PHPGGC、Burp Java Deserialization Scanner、marshalsec、Freddy。
限制:仅限授权测试;资料未提供具体收费标准、价格与平台信息;实际操作需自行确认目标授权范围。