鉴权与路由端点分析
分析目标:$ARGUMENTS
分析指定项目的完整鉴权体系和所有路由端点,识别鉴权边界,对路由进行安全分类。
何时使用
- •渗透测试侦察:测试前需要完整的攻击面清单,识别所有 PreAuth 入口点
- •代码审计启动:审计初期建立鉴权全景图,确定审计范围和优先级
- •权限体系梳理:接手陌生项目,快速理解其鉴权架构和访问控制模型
- •未授权漏洞挖掘:系统性识别可能存在未授权访问的接口
- •生成攻击面报告:输出完整的路由与权限对照清单
典型输入:Web 项目根目录(Java / Python / Node.js / Go / PHP 等)
何时不使用
- •分析单个接口:只需查看某个具体路由的鉴权逻辑,直接阅读相关代码即可
- •非标准框架:项目使用完全自研路由系统,无标准路由定义模式
- •需要修复建议:此 skill 仅输出客观分析结果,不提供任何安全修复方案
- •前端路由分析:此 skill 针对后端 API 路由,前端路由需使用其他工具
- •微服务网关层:此 skill 分析单体应用内部鉴权,API Gateway 层鉴权需单独分析
执行规则
必须严格遵守以下规则,违反将导致分析结果不完整或无效
输出约束
| 规则 | 说明 |
|---|---|
| 禁止修复建议 | 报告不含任何安全建议或修复方案 |
| 完整路径 | 必须输出 /api/v1/users/{id},禁止相对路径 |
| 禁止省略 | 禁止"等"、"其他类似接口"等省略表述 |
| 逐个处理 | 搜索到 N 条结果,报告必须有 N 条记录 |
常见错误(必须避免)
| 错误思维 | 正确做法 |
|---|---|
| "找到一个鉴权框架就够了" | 每层都搜索,可能多种机制并存 |
| "找到主框架就不找中间件了" | 继续搜索所有 Filter/Middleware/Interceptor |
白名单 /** 只记一条 | 必须展开搜索所有具体路由 |
| 在白名单就是无认证 | 检查处理函数内部是否有旁路认证 |
| 只按文件名搜索 | 必须基于代码内容搜索(Grep) |
| 混淆代码难以分析 | 注解/装饰器通常是明文,用 Grep 搜索 |
| 第三方模块不用分析 | 在第三方模块目录中同样搜索路由 |
| "搜到13个中间件只分析1个" | 每个都必须分析,不做假设性跳过 |
| 搜索结果太多只看前几行 | 必须完整阅读所有搜索结果 |
| 凭直觉归类路由 | 必须读取代码确认,不能猜测 |
| "这个模块看起来不重要" | 广度优先,先扫描再深入 |
分析流程概览
本技能分为两个阶段执行:
第一阶段:鉴权机制分析
识别项目的所有鉴权层(框架层、中间件层、注解/装饰器层、代码层),建立完整的鉴权边界。
详细步骤请参见 本 skill 目录下的 workflows/phase1-auth-analysis.md
第二阶段:路由端点分析
基于第一阶段的鉴权边界,分析所有路由端点并进行安全分类。
详细步骤请参见 本 skill 目录下的 workflows/phase2-route-analysis.md
路由分类:
| 分类 | 说明 |
|---|---|
| PreAuth - 完全无认证 | 白名单且无旁路认证 |
| PreAuth - 旁路认证 | 白名单但有自己的认证机制 |
| PostAuth - 高权限 | 需认证且需高权限角色 |
| PostAuth - 普通权限 | 需认证无特定角色要求 |
语言参考文档
根据识别的语言选择对应的参考文档(位于本 skill 目录下的 references/ 文件夹):
| 语言 | 常见鉴权框架 | 参考文档 |
|---|---|---|
| Java | Spring Security, Shiro, JWT | references/java.md |
| Python | Django Auth, Flask-Login, FastAPI Security | references/python.md |
| Node.js | Passport.js, Express-jwt, NestJS Guards | references/nodejs.md |
| Go | Gin middleware, Echo middleware, Casbin | references/go.md |
| PHP | Laravel Auth, Symfony Security | references/php.md |
注意:如果参考文档不存在,根据框架特征自行搜索鉴权组件和路由定义。
输出规范
报告格式
按照 references/report-template.md 模板生成报告。
输出方式
分析完成后,报告需要同时:
- •保存到文件:
$ARGUMENTS/route-analysis-report.md - •返回到对话:完整报告作为最终响应返回
注意:使用
context: fork隔离执行,报告内容会作为子代理输出返回到主对话。确保报告完整,不省略任何路由。