Skip to main content

web-spa-recon

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

الانتقال إلى التثبيت

معلومات المصدر

المستودع
Kur1sulab/blackbox
آخر نشاط في المصدر
١٢ أغسطس ٢٠٢٦ في ١٥:٠٥
لغة SKILL.md المكتشفة
الصينية
النجوم
٣
التفرعات
١

خيارات التثبيت

يُحدَّد 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