# Recon JS Analysis

> 当开始新目标、攻击面不清晰、需要资产测绘/信息收集/前端JS分析/接口与敏感信息提取时调用。负责webpack拆解、source map还原、API端点与密钥提取、历史资产发现、高价值入口定位。命中场景：找不到接口、需要找密钥/隐藏功能/旧版本接口、JS加密与签名逻辑需要还原。

- Skill: `zhaji2333/recon-js-analysis` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zhaji2333/recon-js-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zhaji2333/recon-js-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: zhaji2333 (https://skillmd.com/u/zhaji2333)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/zhaji2333/recon-js-analysis

---


# recon-js-analysis — 资产测绘与前端 JS 深度分析

## 何时调用（触发条件）

- 开始测试新目标，攻击面不清晰
- 需要提取 API 端点、参数结构、鉴权逻辑、隐藏功能
- 需要还原 webpack chunk / source map / 混淆代码
- 需要找硬编码密钥、AK/SK、内部域名、测试账号
- 需要发现、历史资产、旧版本接口
- 需要确定高价值入口点（用户中心/支付/后台/API）

## 一、资产测绘与信息收集

```
端口服务：nmap / masscan / 云资产API
目录扫描：dirsearch / ffuf / 403绕过
JS分析：LinkFinder / SecretFinder / API端点提取
APP逆向：jadx / frida / 抓包分析隐藏接口
```

## 二、信息收集要"脏"（历史与周边）

必须尝试的信息源：
- **Wayback Machine**：翻旧版本页面/JS（可能有已删除的接口和功能）
- **GitHub/GitLab搜索**：目标域名、内部接口、泄露的密钥/配置
- **Google Dork**：site:target.com filetype:pdf/xls/doc/sql/log/bak
- **证书透明度日志**：发现隐藏的子域名
- **招聘JD**：推断技术栈（用了什么框架→对应什么已知漏洞）
- **JS中的注释/TODO**：开发者留下的线索
- **robots.txt / sitemap.xml**：暴露的隐藏路径
- **前端source map**：还原完整前端源码
- **APK/IPA反编译**：提取硬编码的接口和密钥
- **更新日志/Changelog**：新功能=新攻击面

## 三、JS 分析方法论（必须吃透再动手）

**原则：JS不吃透，不发包。**

### 3.1 完整还原

- webpack chunk拆解、source map还原（如有）
- **自动化工具**：Packer-InfoFinder（开源 webpack 资产提取工具，可自动发现 JS、拆解 chunk、提取接口与敏感信息）

```bash
# 单目标扫描（自动发现JS、拆解chunk、提取接口和敏感信息）
python Packer-InfoFinder.py -u https://target.com --finder

# 批量扫描
python Packer-InfoFinder.py -l urls.txt --finder

# 指定JS文件分析（跳过HTML入口，直接分析JS）
python Packer-InfoFinder.py -j "https://target.com/app.js,https://target.com/chunk.js"

# 无头浏览器模式（捕获动态加载的JS）
python Packer-InfoFinder.py -u https://target.com --browser --finder

# 带代理扫描
python Packer-InfoFinder.py -u https://target.com --finder -p http://127.0.0.1:7890
```

- 格式化/美化混淆代码，逐模块阅读
- 优先定位：路由定义、API调用、请求拦截器、响应处理器

### 3.2 必须提取的信息

- 所有API端点（包括注释掉的、条件判断里的、环境变量控制的）
- 请求参数结构（必填/选填/隐藏参数/调试参数）
- 鉴权机制（token生成逻辑、签名算法、加密方式、刷新机制）
- 前端路由表（React Router / Vue Router / Angular Routes）
- 角色/权限判断逻辑（哪些功能对哪些角色开放）
- 硬编码的密钥、AK/SK、内部域名、测试账号
- **URL / IP / 域名清单**（webpack/app.js/抓包/反编译中所有请求地址）：API 网关、后台/管理端域名、CDN/OSS 存储桶、内网 IP、云服务端点、第三方回调地址——每一条都是**可扩展攻击面**，单独列出并进入资产测绘流程
- **appid / appkey / AppSecret / 推送密钥等应用凭证**：单独列出，作为重点深挖对象（见 3.3）
- Feature Flag / Debug开关 / 环境判断（dev/test/prod）
- WebSocket端点和消息格式
- 错误处理逻辑（哪些错误会泄露信息）

### 3.3 资产扩展与凭证上报（提取后必须做）

**① URL/IP/域名 → 资产扩展（可扩展分析内容）**

- 将提取的每个 URL、IP、域名单独成行，标注来源（`webpack 提取` / `app.js` / `source map` / `APP 抓包` / `APK 反编译`），便于交接与复盘
- 全部进入资产测绘流程：子域名枚举、端口扫描、目录扫描、指纹识别
- **APP 中抓取的 URL/IP/域名要提醒用户关注**：很可能是 APP 后台接口或业务接口域名，鉴权往往弱于前端接口，是比前端接口更高价值的测试目标（联动 `android-security-audit` / `miniprogram-security`）

**② appid/appkey 等凭证 → 上报并深入挖掘**

- 提取到 appid/appkey/AppSecret/AK/SK/推送密钥后，**必须上报给用户并单独列出**，作为重点深挖对象，不允许只放在接口清单里带过
- 深挖方向：
  - **验证有效性**：用 appid/appkey 直接调用对应后端接口/云服务 API——云厂商 AK/SK 可致云资产接管（联动 `cloud-infra-supply-chain`）
  - **定位归属**：凭证书透明度日志、代码仓库搜索、目标域名对比，确认凭证对应的域名与服务
  - **越权面**：appid/appkey 对应的管理接口、统计接口、推送接口是否可越权调用、是否缺少鉴权
  - **泄漏面**：多渠道验证（历史版本 JS、Wayback、日志、错误信息、GitHub 泄露）

### 3.4 分析输出格式

```
[JS分析报告]
接口清单：(列出所有发现的API端点)
参数结构：(每个接口的完整参数)
鉴权逻辑：(签名/加密/token机制)
隐藏功能：(debug接口/未启用功能/旧版接口)
可测试点：(按优先级排序)
```

### 3.5 测试执行

- 每个接口必须测试全部HTTP方法（GET/POST/PUT/DELETE/PATCH/OPTIONS）
- 每个参数必须测试：正常值、空值、边界值、类型混淆、数组化、超长、特殊字符
- 鉴权接口：有token测、无token测、过期token测、其他用户token测
- 发现的隐藏参数/调试参数全部尝试

## 四、高价值入口点定位

- 用户中心：注册/登录/找回密码/绑定手机/实名认证
- 支付流程：下单→支付→回调→退款→提现
- 文件功能：头像上传/附件上传/导入导出/报表下载
- 管理后台：/admin /manager /console /backstage
- API接口：/api/v1 /graphql /swagger /actuator

## 五、冷门但高价值的漏洞点（攻击面速查）

| 场景 | 漏洞类型 | 挖掘思路 |
|---|---|---|
| 客服/工单系统 | 存储XSS→钓鱼客服 | 提交工单内容含XSS，客服后台触发 |
| 邮件/消息通知 | 邮件头注入/SMTP注入 | 收件人、主题可控时注入换行符 |
| 二维码/短链生成 | SSRF/重定向 | URL参数可控，探测内网或钓鱼 |
| 地图/定位服务 | 信息泄露 | 泄露内部POI、员工位置 |
| 日志/监控接口 | 未授权+敏感信息 | /actuator /metrics /debug |
| 第三方登录 | OAuth劫持 | redirect_uri校验不严 |
| 分享/邀请功能 | 越权/信息泄露 | 分享链接可遍历、权限过大 |
| 数据导出 | 注入/越权 | 导出条件可控、无归属校验 |

## 六、输出与交接

完成本技能后，将提取的接口清单、参数结构、鉴权机制、隐藏功能整理为可测试清单，按类型分发给对应专项技能；**同时按 `hunt-clueboard` 写入 `hunts/<目标>/CLUEBOARD.md`**（Host/路径/钥/否定证据当轮落盘，不只放在对话里）：
- 零身份、路径不在当前前端、加密当鉴权、迁域/兄弟域漏路径 → `unauth-path-key-hunt`
- 接口/鉴权问题 → `api-protocol-security` / `auth-access-control`
- 参数拼接/注入点 → `injection-vulns`
- 文件相关功能 → `file-handling`
- URL可控功能 → `ssrf-internal-network`
- 提取的 URL/IP/域名清单 → 资产测绘扩展（新子域/新端口/新后台），APP 来源的提醒用户关注后台接口域名
- 提取的 appid/appkey/AK/SK 等凭证 → **上报用户并深入挖掘**（验证有效性、打云资产/后端接口，联动 `cloud-infra-supply-chain`）


