Files
Sec-Interview/Chapter1/1-25.md
T
2025-09-27 22:13:21 +08:00

44 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### JS 接口有什么作用
分析 JS 文件,特别是那些负责 AJAX 调用或定义 API 端点的代码,可以帮助渗透测试工程师获得以下几类关键信息:
**1. 发现隐藏的 API 端点**
这是 JS 分析最核心的作用。许多 Web 应用使用前端 JS 来与后端进行数据交互,但这些接口可能并未通过 URL 路径爆破暴露
- **暴露路径:** JS 文件中可能包含大量的 **硬编码 API 路径**,例如 `/api/v2/user/delete``/internal/data/export``/admin/config/save`。这些路径可能指向未文档化、未被使用的或仅供内部调用的功能
- **绕过认证:** 发现的某些 API 路径可能在设计时依赖前端的认证逻辑,但后端缺乏严格的权限检查,从而实现**水平或垂直权限绕过**
- **参数泄露:** JS 代码会暴露 API 调用所需的**参数名称和格式**,例如 `request.data.userId``request.data.authToken`,为后续的参数篡改和模糊测试提供依据
**2. 识别第三方服务与集成**
现代应用大量依赖第三方服务进行分析、存储或身份验证。
- **API 密钥/Token 泄露:** JS 文件中可能意外地硬编码了用于访问外部服务的敏感凭证,例如 **Google Maps API Key**、**AWS S3 访问凭证**、**支付网关密钥**Stripe/PayPal Public Key)或 **Firebase 数据库配置**
- **子域名/域名信息:** 可能会发现指向其他子域名或外部服务的域名,例如用于数据分析的 `analytics.target.com` 或用于文件存储的 `s3-bucket-name.amazonaws.com`,从而扩大资产范围
**3. 了解应用架构和业务逻辑**
JS 代码提供了应用如何工作的第一手资料,有助于构造更精准的测试用例。
- **输入验证逻辑:** 开发者有时会在前端 JS 中实现输入验证(如密码长度、邮箱格式)。了解这些前端规则有助于识别**哪些验证是仅在客户端执行**的,从而绕过验证,直接向后端发送非法数据
- **版本和框架信息:** JS 文件名或头部注释通常会暴露所使用的 **前端框架(如 React, Vue, Angular)的版本号**,有助于发现已知的客户端漏洞
**4. 敏感信息和注释泄露**
开发者在调试或开发过程中留下的信息,可能直接暴露敏感数据
- **遗留代码和注释:** JS 文件中可能包含已弃用的功能代码或**包含凭证、逻辑说明或调试信息的注释**
- **环境变量:** 某些构建工具会将 `.env` 文件中的**公开环境变量**打包进 JS 文件中,例如 `REACT_APP_API_URL``DEBUG_MODE=true`
**如何在信息收集中利用 JS 接口?**
渗透测试工程师通常通过以下工具和方法来分析 JS 接口:
1. **Spidering/爬虫:** 使用 Burp Suite 或 ZAP 等代理工具,在浏览目标网站时**捕获并保存所有加载的 JS 文件**
2. **关键词搜索:** 对收集到的 JS 文件进行批量关键词搜索,寻找:
- `api/``v1/``v2/` (API 版本和路径)
- `secret``key``token``password` (凭证)
- `.json``.xml``.env` (敏感文件)
- `s3``aws``firebase` (第三方服务)
3. **自动化工具:** 使用 **LinkFinder****JSFScan** 等工具,它们能自动解析 JS 文件,**提取潜在的 URL 路径和域名**,从而大大提高效率