Agent Skills
返回列表
🔒

不安全的反序列化

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/deserialization-insecure-lr-ch3x。

技能介绍

反序列化漏洞的检测与利用难点

在渗透测试和漏洞挖掘中,反序列化漏洞是最容易被"看到"却最难被"利用"的一类问题。安全扫描器能标记出 ObjectInputStream.readObject() 这样的 sink 点,但真正完成攻击需要解决两个独立问题:找到可用的入口(sink),以及找到能到达危险操作的 gadget chain。大多数自动化工具只能做到前者,而后者需要对目标环境依赖库版本、可用类路径、以及各语言生态中已知链的兼容性有深入理解。

核心能力与工作方式

这个技能将反序列化利用拆解为可操作的步骤:

语言覆盖与工具链

  • Java:整合 ysoserial 生态,覆盖 Commons Collections 1–7、CommonsBeanutils、Spring、JDK-only、Groovy、Hibernate、ROME、C3P0 等链的版本兼容性矩阵,支持 Shiro、WebLogic 等中间件的针对性利用
  • PHP:基于 PHPGGC 进行 gadget chain 选择,处理 O: 格式的序列化数据指纹识别
  • Python:利用 pickle 模块的 __reduce__ 机制实现任意代码执行

流量指纹与检测规避

  • 提供各格式的 magic bytes 对照表:Java AC ED、.NET AAEAAD、Python pickle 80 0N、PHP O:、Ruby 04 08
  • 当 WAF 拦截 BCEL ClassLoader 或 Fastjson @type payload 时,可路由到 Ghost Bits Cast Attack,通过 Unicode 字符包裹字节码绕过指纹检测

场景路由

  • 反序列化触发 JNDI lookup 时,切换到 JNDI 注入流程
  • 当目标端点是 RMI Registry、T3、AJP 等暴露的管理服务时,路由到未授权访问流程

适用边界

  • 本技能侧重利用侧技术,不包含漏洞修复方案或防御配置指南
  • gadget chain 的可用性高度依赖目标环境的具体依赖版本,矩阵仅提供兼容性参考,实际利用需结合 javap 或反编译结果验证
  • .NET ViewState 利用需要获取 machineKey,这在实际场景中往往是独立难点
  • Ruby YAML 利用需区分 YAML.load 与 YAML.safe_load 的版本差异

使用场景

  • 渗透测试中遇到Java反序列化入口,需要选择合适的gadget chain完成RCE
  • WAF拦截了BCEL ClassLoader payload,需要用Ghost Bits绕过指纹检测
  • 遇到Shiro或WebLogic目标,需要查询对应版本的利用链兼容性
  • 分析流量时需要根据magic bytes判断反序列化数据格式类型

适合人员

  • 渗透测试工程师需要在实战中快速找到可用的反序列化利用链
  • 安全研究员需要分析Java应用的反序列化漏洞并验证gadget chain可行性
  • 红队人员需要绕过WAF对反序列化攻击的检测
  • 开发安全工程师需要理解反序列化攻击原理以设计防御方案