Agent Skills
返回列表
🔒

不安全的反序列化攻击手册

IT 运维与安全 更新于 2026.08.30

将以下提示词粘贴到你的 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 @type payload 时,使用 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 目标时需现成的利用链与工具组合