用途:在 Java 白盒审计中检测注入类漏洞,从源码层面判断注入是否成立,核心是验证 Source→Sink 路径上的过滤是否充分。构造 payload、绕 WAF 等运行时利用属于黑盒 exploit 技能范畴。
覆盖类型与典型 Sink:SQL 注入(Statement.execute、session.createQuery、MyBatis ${}、JPA nativeQuery);命令注入(Runtime.exec、ProcessBuilder.start、commons-exec);SSRF(HttpURLConnection、OkHttpClient、RestTemplate、WebClient);SpEL/OGNL 注入(ExpressionParser.parseExpression、ValueStack.findValue、@Value);LDAP 注入(DirContext.search、LdapTemplate.search);NoSQL 注入(MongoCollection.find、@Query、$where)。
审计流程四步:一、从 java-audit-pipeline Phase 3 产出的 EVID_* 证据中筛选注入类条目(EVID_SQL_、EVID_CMD_、EVID_SSRF_、EVID_EXPR_、EVID_LDAP_、EVID_NOSQL_),无证据的 Sink 只能标“待验证”;二、追踪 Source→Sink 路径上每步过滤/转义,评估对当前注入类型是否有效;三、过滤不充分时分析绕过路径,能给出思路标“已确认”,否则标“待验证”并记录已知过滤方式;四、用统一公式 Score = R0.40 + I0.35 + C*0.25 评分,命令/表达式注入 I=3,SQL 注入 I=2-3。
要点示例:MyBatis #{} 安全、${} 危险,ORDER BY 标识符无法参数化需白名单;Runtime.exec(String) 按空白拆分不经 shell,但 sh -c 包装会退化;SSRF 需检查协议限制与重定向跟随;SpEL 可用 SimpleEvaluationContext 限制功能;LDAP 过滤器需转义 ( ) * \ \0;NoSQL 的 Criteria API 参数化安全。
限制:本技能只做源码层判断,不负责运行时利用;未提供 EVID 证据的 Sink 无法确认;具体安装与调用命令资料未提供。