java-auth-config-audit

$npx mdskill add wgpsec/AboutSecurity/java-auth-config-audit

Audit Java auth flaws in source code for security gaps.

  • Detects bypass, privilege escalation, and logic errors.
  • Scans Spring Security, Shiro, and custom filter chains.
  • Matches code patterns against known vulnerability signatures.
  • Reports findings with severity levels and evidence paths.

SKILL.md

.github/skills/java-auth-config-auditView on GitHub ↗
---
name: java-auth-config-audit
description: |
  Java 源码认证与配置安全审计。当在 Java 白盒审计中需要检测认证绕过、权限缺陷或安全配置问题时触发。
  覆盖 6 类风险: 认证绕过(Spring Security/Shiro Filter 链 URI 解析差异)、
  越权(IDOR/水平越权/垂直越权)、JWT 安全(算法混淆/密钥泄露/Claims 验证)、
  加密配置(弱算法/硬编码密钥/不安全随机数)、信息泄露(错误堆栈/Actuator/Debug 模式)、
  业务逻辑漏洞(竞争条件/金额篡改/流程绕过)。
metadata:
  tags: authentication bypass, authorization, idor, jwt, shiro, spring security, 认证绕过, 越权, 加密配置, 信息泄露, actuator, 业务逻辑, java source audit
  category: code-audit
---

# Java 认证与配置安全源码审计

Java 后端项目中认证、授权与安全配置是最高频的漏洞产出面。本 skill 提供 6 大类白盒审计的完整检测思路,适用于 Spring Boot/Spring Security、Apache Shiro 及自定义框架。

## 相关 Skill

- `java-framework-audit` — Spring/Struts/MyBatis 框架审计
- `java-injection-audit` — SQL/OGNL/EL 注入审计
- `java-serialization-audit` — 反序列化漏洞审计
- `idor-methodology` — 黑盒 IDOR 测试方法论

## 深入参考

- 6 类漏洞详细模式(危险代码/安全代码/EVID 证据)-> [references/auth-config-patterns.md](references/auth-config-patterns.md)

---

## 6 类风险速查表

| # | 类别 | 关键搜索入口 | 危害等级 |
|---|------|-------------|---------|
| 1 | 认证绕过 | `SecurityConfig`, `ShiroFilterFactory`, `doFilter` | 严重 |
| 2 | 越权 | DAO/Mapper 查询语句, `@PreAuthorize`, Controller 参数 | 高 |
| 3 | JWT 安全 | `Jwts.parser()`, `Algorithm.HMAC`, `SECRET_KEY` | 高 |
| 4 | 加密配置 | `MessageDigest`, `Cipher.getInstance`, `new Random()` | 高 |
| 5 | 信息泄露 | `application.yml` Actuator 配置, `@ExceptionHandler` | 中 |
| 6 | 业务逻辑 | 余额/库存操作, 状态机流转, 支付回调 | 高 |

---

## 1. 认证绕过审计要点

- **Spring Security**: 检查 `FilterChainProxy` 匹配规则,`AntPathRequestMatcher` 与 `MvcRequestMatcher` 差异(尾部斜杠/路径后缀);`requestMatchers` 顺序——宽松规则 `permitAll()` 在前会覆盖后续拦截;`permitAll()` 是否过度开放(如 `/api/**`)
- **Shiro**: URI 解析差异导致绕过——`/admin/` vs `/admin` vs `/admin/..;/`;CVE-2020-1957 / CVE-2020-11989 / CVE-2020-13933 等 path normalization 系列绕过
- **自定义 Filter**: `doFilter()` 中 early return 导致后续 chain 未执行;白名单正则不严谨(如 `startsWith("/public")` 可被 `/publicevil` 匹配)

## 2. 越权审计要点

- **水平越权**: 接口仅校验登录态未校验资源归属——DAO 层 `WHERE id = #{orderId}` 缺少 `AND user_id = #{currentUserId}` 条件
- **垂直越权**: Controller/Service 方法缺少角色注解 `@PreAuthorize`/`@RequiresRoles`;枚举值(角色 ID)可猜解
- **IDOR**: 自增 ID 可遍历;UUID 是否真正不可预测;批量接口跳过单条权限检查

## 3. JWT 安全审计要点

- **算法混淆**: `alg: none` 绕过签名验证;RS256 -> HS256 攻击(用公钥作为 HMAC 密钥)
- **密钥硬编码**: 源码中 `SECRET_KEY = "xxx"` 或 `application.yml` 明文配置
- **Claims 校验缺失**: `exp`(过期)/`iss`(签发者)/`aud`(受众) 未验证导致 token 可跨环境复用
- **刷新机制**: `refresh_token` 长期有效且未绑定用户/设备,被盗后可无限刷新

## 4. 加密配置审计要点

- **弱算法**: `MD5`/`SHA1` 做密码哈希、`DES`/`RC4` 加密、`ECB` 模式(泄露数据模式)
- **正确做法**: 密码用 `bcrypt`/`scrypt`/`argon2`;对称加密用 `AES-GCM`/`AES-CBC+HMAC`
- **硬编码密钥/盐值**: `private static final String KEY = "..."` 或盐值写死在代码中
- **不安全随机**: `java.util.Random` 可预测,安全场景必须用 `SecureRandom`

## 5. 信息泄露审计要点

- **Actuator 端点暴露**: `/env`(环境变量/密码)、`/heapdump`(堆内存含密钥)、`/jolokia`(远程代码执行)
- **详细错误堆栈**: 全局异常处理器缺失,SQL 报错/类名/路径直接返回客户端
- **Debug 模式**: `server.error.include-stacktrace=always`、`spring.devtools` 未移除
- **敏感数据日志**: `log.info("用户密码: {}", password)` 或完整信用卡号写入日志文件

## 6. 业务逻辑审计要点

- **并发竞争**: 余额检查与扣款非原子操作(double-spending);优惠券/积分重放
- **参数篡改**: 金额/数量/折扣由客户端传入且服务端未重新计算;订单金额可为负数
- **流程绕过**: 多步流程(注册-验证-设置密码)步骤间缺少状态校验,可直接跳到后续接口

---

## 检测清单

审计时逐项确认,每发现一项即记录 EVID 证据:

- [ ] Spring Security 配置链顺序问题或过度 `permitAll`
- [ ] Shiro `filterChainDefinitionMap` URI 解析差异绕过
- [ ] 自定义 Filter/Interceptor early return 或白名单绕过
- [ ] 数据查询是否绑定当前用户 ID(水平越权)
- [ ] 敏感接口是否有角色/权限注解(垂直越权)
- [ ] JWT 是否强制指定算法 + 密钥安全存储 + Claims 全验证
- [ ] 密码存储 bcrypt/scrypt/argon2; 对称加密 AES-GCM 且密钥不硬编码
- [ ] 随机数使用 SecureRandom
- [ ] Actuator 端点限制访问 + 认证保护
- [ ] 全局异常处理器吞掉堆栈; 生产关闭 debug/devtools; 日志无敏感数据
- [ ] 金额/库存操作原子性; 多步流程状态机校验

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|