Skip to main content

web-spa-recon

SPA 前端侦察——从 Vue/React 单页应用提取真实 API 攻击面。识别 SPA fallback、拉取 JS chunk 提取接口定义/baseURL/staging 地址、区分 AUTH/未授权端点、挖掘认证接口面(登录/SSO/OAuth)。当目标是现代前后端分离站点时使用。

설치로 이동

소스 정보

저장소
Kur1sulab/blackbox
최근 소스 활동
2026년 8월 12일 15:05
감지된 SKILL.md 언어
중국어
스타
2
포크
0

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
web-spa-recon
description
SPA 前端侦察——从 Vue/React 单页应用提取真实 API 攻击面。识别 SPA fallback、拉取 JS chunk 提取接口定义/baseURL/staging 地址、区分 AUTH/未授权端点、挖掘认证接口面(登录/SSO/OAuth)。当目标是现代前后端分离站点时使用。
version
1.0.0
platforms
["windows","linux"]
metadata
{"hermes":{"tags":["recon","spa","frontend","api","javascript","web"]}}
# SPA 前端侦察(Web 单页应用攻击面提取) > 现代站点(Vue/React/ElementUI 等)后端 API 全隐藏在 JS bundle 里——侦察的核心是拆 JS。 ## 触发条件 - 目标返回单页应用(title 如 xxx-front、SPA 结构、index.html 引用 webpack chunk) - 需要找 API 端点/隐藏接口/未授权面 ## 工作流 ### 1. 识别 SPA 与 SPA fallback - 首页 HTML:`<div id="app">` + `/static/js/runtime.*.js` / `chunk-vendors.*.js` → Vue;`main.*.js` → React - **SPA fallback 识别(关键坑)**:history 模式路由下,任何未匹配路径都返回 index.html(HTTP 200 + `Content-Type: text/html` + 固定字节数,如 4307) - 探测端点必须看 Content-Type / 响应大小,不能只看状态码——`/api`、`/v2/api-docs` 返回 200 可能是 fallback 不是真实接口 - 真实后端 API 返回 `application/json` ### 2. 拉取 JS 提取接口定义 ```bash # 从 index.html 提取 JS 路径 # 优先拉大 chunk(chunk-common/vendors),接口定义集中在那里 curl -s http://TARGET/static/js/chunk-common.HASH.js -o common.js ``` grep 模式(PowerShell 注意转义): | 模式 | 提取内容 | |---|---| | `baseURL:"..."` | 后端地址、**staging/开发环境地址**(重要!) | | `["get",\`${BASE_URL}/path\`]` 或 `["post",...]` | 接口定义:方法 + 路径 + 是否需认证(`!1`=否 `!0`=是)+ 配置 | | `uploadImgUrl=`/`uploadFileUrl=` | 上传接口(高危面) | | `http(s)://域名` | 第三方/外包域名线索 | | `login\|captcha\|verify\|ssoToken\|pku\|oauth` 上下文 | 认证接口面 | - 接口路径常为动态模板拼接(`${n.Ir}/admin/...`),用宽松正则提取 - 懒加载路由的接口可能在按需 chunk 里,先提 `webpackChunk` 清单 ### 3. 端点批量探测分类 对提取的接口做轻量 GET(只读,RoE 内): ``` 分类规则: - 含统一未登录 code(如 10001)→ AUTH(已鉴权,跳过或走认证面) - 404 / Not Found → 不存在 - 返回 JSON 数据 / 200 + 长度 > 100 → DATA!(未授权候选,深挖) - 其他 → 单独看响应 ``` - 所有 /admin/ 等业务前缀通常统一鉴权;**认证前缀(/uc/、/auth/、/login、/sso)无认证可达**是正常设计——验证码绕过、SSO token 校验、OAuth 配置泄露在这里挖 - 未授权接口金矿:`/export`、`/download`、`/list`、`/look`、`/addressbook`、`/user/data` 类 ### 4. 高价值线索 - **staging 地址泄露**:生产前端 baseURL 写死测试环境(如 xxx.stg.开发商.com)——确认可达性记录为信息泄露;⚠️ 第三方域名可能不在授权范围,深入测试前确认 scope - **OAuth 客户端配置无认证直出**(如 /uc/home/pku_login):appId + submitUrl + redirectUrl——关注回调是否 HTTP 明文 - **系统版本**:接口响应常带 `sys_version` 字段(信息泄露 + 漏洞匹配用) - 外包开发商域名(itknown.com 之类)→ 供应链线索 ## 坑位 - crt.sh 常被限流(返回空/0 bytes)→ 换 certspotter / hackertarget API - PowerShell 正则转义地狱:JS 提取用单引号包裹模式,`${` 要转义或用 char 拼接 - 大 JS(700KB+)用 Get-Content -Raw 一次性读再正则,别逐行 - 探测请求保持轻量(30-50 个/轮),全 AUTH 就转认证面,别硬枚举
GitHub에서 보기