SuperAPI AI 工具集

hunt-spa-api

安全与审计

查看项目

更新于 10-15 21:37

技能介绍

用途:当目标站点返回一个很小的 HTML 外壳加体积较大的 /static/js/.js 或 /_next/static/ 包(SPA),且出现 console、app、dashboard、admin 等子域或 api 相关主机时,使用本技能从公开 JS 中还原后端 API 地图,并测试其鉴权与访问控制。核心判断是:前端登录受保护不代表后端 API 每条路由都校验令牌,鉴权常只在网关实施,部分路由组会遗漏中间件。

主要能力:1)抓取 HTML 外壳并枚举打包文件,包括 webpack 懒加载的编号异步 chunk(仅从 index.html 取包会遗漏路由覆盖)。2)从 bundle 中提取 API 主机、版本化基础路径、路由字符串字面量与疑似密钥。需注意压缩器把路由存为拼接字符串片段(如 account/payment/list),而非完整 URL,直接 grep /api/v* 往往无结果。3)先找一条已知受保护端点作为对照,记录正确拒绝的响应(401 或 Missing authorization header)。4)对发现的每条路由以不带 Authorization 头、同时用 GET/POST 两种方法测试,并与对照比较:401 表示正确;200 带数据为未认证数据暴露;400 提示某字段必填说明请求已进入业务校验,属鉴权绕过;200 且带数据库或堆栈报错说明未认证触达数据层;若必填字段名含 is_admin、role_id、account_type 等,可能由客户端参数决定权限。5)用一条端点返回的 ID(account_id、order_id 等)去访问其它端点,证明整个路由可达;同时测试 dev/beta/staging 变体(鉴权常更弱);查看响应头,Access-Control-Allow-Origin: * 会放大问题。

限制与注意:发现密钥需先验证,多数 AIza 开头的是地图或分析键而非鉴权密钥,不要夸大定性;404 可能是基础路径或请求方法不对,可尝试 /api/、/api/v2/ 及 bundle 中的精确路由串;只在最小必要范围内取证,用少量记录或 totalCount 证明缺失的鉴权检查即可,不要枚举整表;不要用创建账号、上传等写操作作为证明,读端点即可证明鉴权缺口,写操作属破坏性行为需明确授权;测试前确认 API 主机确属目标,避免误测同名第三方。可与此前资料中提到的 hunt-api-misconfig、hunt-idor、hunt-source-leak、hunt-nextjs、redteam-mindset、recon-scope-triage 等技能衔接使用。具体安装方式运行环境与工具依赖,暂未提供。