不安全的反序列化攻击手册
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/deserialization-insecure-vho4 技能到当前 AI 助手中。
技能介绍
解决什么问题
当应用接收外部数据并用 readObject、unserialize、yaml.load 或 pickle.loads 还原对象时,攻击者可构造恶意 payload,在反序列化过程中触发 gadget chain 进而执行任意命令。不同语言和框架的 sink 位置差异很大,而找到可用的 gadget chain 通常比找到 sink 更难——这正是大模型容易混淆的环节。本技能专门处理这一区分。
技能如何工作
- 按语言与运行时分域:Java、PHP、Python 各有独立的 gadget chain 生态,技能分别处理而非混用
- 通过流量指纹识别序列化格式:Java 的
AC ED、.NET 的AAEAAD、Python pickle 的80 0N、PHP 的O:、Ruby 的04 08 - 按目标组件选择工具与链:ysoserial、PHPGGC,以及 Shiro、WebLogic、Commons Collections 的特定链
- 覆盖特殊场景:Phar 反序列化、Python pickle 滥用、.NET ViewState 伪造(需
machineKey) - 识别并绕过常见防护:当 WAF 拦截 BCEL ClassLoader 或 Fastjson
@typepayload 时,使用 Ghost Bits Cast Attack 将字节码逐字节包裹进 Unicode 字符,使其无法被指纹匹配 - 关联路由:反序列化导致 JNDI lookup(如 post-JDK 8u191 的 LDAP 绕过)或目标是暴露的管理服务(RMI Registry、T3、AJP)时,转交对应技能
适用边界
- 仅面向授权测试场景。对未授权目标使用这些技术属违法行为。
- gadget chain 的可用性取决于目标环境的实际依赖版本,需结合 JAVAGADGETCHAINS.md 的版本兼容矩阵判断,而非假设文档中的链都能直接工作。
- 指纹识别受流量加密与协议封装影响,识别结果应作为辅助判断而非唯一依据。
- 不提供针对未收录框架的通用绕过;Hessian、Kryo、XStream 等版本差异需要自行补充实验。
使用场景
- 在授权渗透测试中,目标 Java 应用使用 Shiro 或 WebLogic,需确定可用 gadget chain 并生成验证 payload
- 分析攻击流量时,需依据 magic bytes 指纹判断序列化格式(Java、PHP、Python、Ruby、.NET)
- WAF 拦截 BCEL ClassLoader 或 Fastjson @type payload 时,需用 Ghost Bits 变体绕过检测
- 需判断目标 JDK 版本,确认 post-8u191 后 JNDI 注入是否应走 LDAP→反序列化路径
适合人员
- 渗透测试工程师,在授权评估中需快速定位反序列化 sink 并找到版本可用的 gadget chain
- 安全研究员,研究 Java 反序列化生态时需查阅组件版本兼容矩阵与各语言流量指纹
- 红队队员,面对 Shiro、WebLogic 或 Commons Collections 目标时需现成的利用链与工具组合