Home

Awesome

code-inspector

注意:本项目是一个学习项目,可能不会长期维护,作者精力有限,欢迎大佬们二次开发

一个Java自动代码审计工具,尤其针对SpringBoot框架,也可自行改造以适配其他情况

提供一个SpringBoot的Jar包即可进行自动代码审计并生成报告,底层技术基于字节码分析

由于没有真正的执行,例如无法识别过滤等操作,所以会存在误报false positive

注意:漏洞检测并不是简单地检测某个方法内是否包含敏感方法,而是从每个Controller的每个Mapping的每一个用户可控参数开始分析与追踪,构建出方法调用链,分析这个参数在整个链路的过程

成果

漏洞扫描成果

使用GUI启动器

选择好你的Jar包后点击Start即可,默认开启所有配置

注意:目标JarJava 8编译的情况下兼容性最佳,高版本Java可能优化指令导致与原规则不匹配产生漏报

选项:

DoS

配置DoS模块:

RCE

配置RCE模块:

SSRF

配置SSRF模块:

SQL Injection

配置SQL Injection模块:

Open Redirect

配置Redirect模块:

Deserialization

配置Deserialization模块:

使用API

可以使用以下的方式方便地进行扫描,注意三个boolean参数绝大多数情况应该设置为false

public static void testRCE() {
    CodeInspector inspector = new CodeInspectorImpl();
    List<ResultInfo> results = inspector.analyzeRCE(
            "your/path/to/jar/file",
            false, false, false);
    System.out.println(results.size());
}

Graphviz

指定Controller类名和Mapping的方法名,以及分析的参数索引,即可画图

常见问题

常见问题

如何构建方法调用链

如何构建方法调用链

如何处理分支

如何处理分支

通用污点传递规则

通用污点传递规则

如何编写新规则

如何编写新规则