💡
原文中文,约16200字,阅读约需39分钟。
📝
内容提要
本文介绍了使用自动化链子挖掘工具GadgetInspector的方法和原理,通过静态分析字节码挖掘可能存在的链子。GadgetInspector的核心代码是PassthroughDiscovery,可用于扫描jar和war文件并将结果保存至文件中。GadgetChainDiscovery类用于验证链子。需要了解asm和字节码文件的结构。
🎯
关键要点
- GadgetInspector是一个自动化链子挖掘工具,通过asm方法对字节码进行静态分析。
- GadgetInspector的核心代码是PassthroughDiscovery,用于扫描jar和war文件并保存结果。
- GadgetChainDiscovery类用于验证链子,需了解asm和字节码文件结构。
- 在学习GadgetInspector之前,读者需具备asm和字节码的基础知识。
- 局部变量表和操作数栈的理解是GadgetInspector项目中最难的部分。
- GadgetInspector的入口类包含参数解析、字节码分析和数据保存功能。
- MethodDiscovery类扫描jar和war中的所有.class文件信息并保存。
- PassthroughDiscovery类处理方法调用关系,使用逆拓扑排序来分析参数和返回值的关系。
- CallGraphDiscovery类分析调用者和被调用者的参数关系及返回值。
- SourceDiscovery类提供常见反序列化漏洞特征的检测。
- GadgetChainDiscovery类验证获取的链子并保存可用链子到文件中。
- 建议读者在学习GadgetInspector之前,系统学习asm和字节码文件结构。
➡️