不安全的反序列化
将以下提示词粘贴到你的 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、.NETAAEAAD、Python pickle80 0N、PHPO:、Ruby04 08 - 当 WAF 拦截 BCEL ClassLoader 或 Fastjson
@typepayload 时,可路由到 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对反序列化攻击的检测
- 开发安全工程师需要理解反序列化攻击原理以设计防御方案