SuperAPI AI 工具集

hunt-deserialization

安全与审计

查看项目

更新于 10-27 02:31

技能介绍

用途 hunt-deserialization 是一个安全测试技能,主题为「不安全反序列化」的排查与验证。其适用前提是教育用途或已获得系统所有者明确书面授权的安全评估,例如在授权范围内的漏洞赏金或渗透测试项目。资料明确说明:未经授权使用属于违法,且严格禁止。

主要能力 该技能按技术栈整理了反序列化风险的「高价值目标」与攻击面信号,包括:

  • Java:ysoserial 常见 gadget 链(CommonsCollections、Spring、JNDI、Groovy 等),以及 Apache Shiro rememberMe、Java 序列化对象魔数 AC ED 00 05(base64 前缀 rO0A)等识别特征。
  • PHP:对象注入与 __wakeup / __destruct 魔术方法,phar:// 元数据反序列化,phpggc 链。
  • Python:pickle.loads 与 reduce、yaml.load 的已知不安全默认行为。
  • Node:node-serialize 的 $$ND_FUNC$$ IIFE 标记。
  • .NET:BinaryFormatter 与 TypeConfuseDelegate 链、ViewState 是否启用 MAC 的核验。
  • Ruby:Marshal.load / Marshal.restore 与 Gem 相关 gadget 链。
  • JNDI/Log4Shell:${jndi:ldap://...} 形式的注入点测试。

同时给出检测模式示例,如请求头、Cookie 与端点信号(application/x-java-serialized-object、rememberMe、__VIEWSTATE、/wls-wsat/ 等)。

使用方式 技能采用分阶段方法:先以只读方式确认授权范围(如读取 scope.txt),再按 Java、PHP、Python、.NET、JNDI、Ruby 等阶段依次进行识别与受控验证。文档中包含若干命令示例,例如使用 ysoserial 生成 payload、用 curl 发送序列化数据、使用 interactsh-client 建立 OOB 回调监听等。但资料强调:必须先通过「强制确认门」——用户须说明确切目标 URL/IP/账号或资源,确认书面授权与允许范围,查看具体命令及其预期效果,并在当前对话中明确确认;未确认前只能只读并提供防御性建议,优先使用沙箱、一次性虚拟机或受控实验环境。

验证与限制 资料指出,单个信号本身不等于 RCE;必须结合攻击者可控性、可达的反序列化路径、可用 gadget、权限和已证实影响来评估严重性。DNS/HTTP 回调只能证明出站交互,不能单独证明反序列化或命令执行;只有响应中出现命令输出,才可确认完整 RCE。JNDI 查询在已修补 JVM 上并不自动等于类加载或 RCE。测试应保持有界,使用唯一的受控回调,不读取机密、不提权、不写入持久文件,并在获得授权范围内的证据后停止。

此外,该资料为文档式导入,上游的可执行辅助脚本、命令、引擎与研究资产未随附打包,需要时须从源仓库重新安装工具;任何外部工具包在使用前应审查并固定版本。PHP 8 已停止通过文件系统访问自动反序列化 phar 元数据的旧行为,但仍可能通过显式 getMetadata() 触发反序列化,需核实具体版本与调用路径。

适用场景 适用于获得授权、且任务属于该漏洞类别或技术范围的安全评估工作,例如反序列化风险面识别、受控验证与证据收集。

限制 仅限授权范围;探测、利用或凭据访问命令前必须完成确认门;文档中部分示例存在注意事项(例如 base64 仅在目标显式解码时正确,Python 示例并未真正生成 payload.pkl),不应直接照搬;所有发现需经独立验证后再报告。