daniyalnasir-root/HARStorm
GitHub: daniyalnasir-root/HARStorm
HARStorm 通过解析并重放 HAR 捕获,识别未携带认证信息时仍返回 200 的端点。
Stars: 0 | Forks: 0
# HARStorm — 使用 HAR 捕获重放以查找未认证端点
您从已登录的浏览器会话导出了一个 HAR 文件。其中一半的请求调用了开发者认为需要认证的端点。`HARStorm` 会剥离认证标头后重放每个请求,并告知您哪些请求在未认证情况下仍静默返回了 200。输出是一个按主机分组的树形结构及其端点判决结果,随后是为每个“卡住”的发现提供可直接复制粘贴的 curl 命令,以便您在全新终端中确认并继续推进报告。
[](https://www.python.org/)
[](LICENSE)
[](#)
## 概述
查找 Web 应用程序中破损访问控制的最快方式是:从真实的已认证会话中获取 HAR 文件,并在不携带 Cookie 的情况下重放每个请求。返回 401/403 的端点正确实施了认证;仍然返回 200 的端点要么是故意公开的(如静态资源或 `/health` 端点),要么是存在漏洞。
`HARStorm` 自动化了枯燥的一半工作。它解析 HAR 文件,剥离一组可配置的承载认证的标头(默认包括 `Cookie`、`Authorization`、`X-Auth-Token` 以及 `X-CSRF-*` 系列),保留请求的方法与请求体进行重放,并按主机对结果进行树形分组。未认证的端点(即在未提供认证信息时仍返回 2xx 的请求)会按 HTTP 方法严重性排序(DELETE 优先于 PUT 优先于 POST 优先于 GET)输出为可直接复制粘贴的 curl 命令,方便您优先处理高危问题。
默认跳过静态资源,因为每个 CSS/JS/图片显然都会返回 200;如需测试它们,请使用 `--include-static` 参数。
## 功能特性
- 解析 Chrome 与 Firefox 开发者工具以及 Burp 的 HAR 导出文件(标准 HAR 1.2 格式)
- 默认剥离 `Cookie`、`Authorization`、`X-Auth-Token`、`X-CSRF-*`、`X-XSRF-Token` 等认证相关标头;可通过 `--strip k1,k2,...` 覆盖
- 保留请求方法、请求体与 Content-Type — JSON 请求体保持为 JSON
- 树形分组输出:主机位于顶层,每个端点使用 `├──`/`└──` 连接符展示
- 最终输出块列出“卡住”端点的 curl 命令,按方法严重性排序(DELETE 优先)
## 安装
```
git clone https://github.com/daniyalnasir-root/HARStorm.git
cd HARStorm
python3 harstorm.py -h
```
无需 `pip install`,仅依赖 Python 标准库。
## 用法
```
# 默认:剥离常见认证标头,跳过静态资源
python3 harstorm.py --har capture.har
# 自定义剥离集(同时删除特定的 CSRF 标头)
python3 harstorm.py --har capture.har --strip "cookie,authorization,x-app-session,x-csrf"
# 测试静态资源(罕见,但对配置错误的 CDN 路径很有用)
python3 harstorm.py --har capture.har --include-static
```
## 命令行选项
| 标志 | 是否必需 | 描述 |
|------|----------|------|
| `--har` | 是 | HAR 1.2 文件路径 |
| `--strip` | 否 | 逗号分隔的标头名称列表,用于指定要剥离的认证标头;默认为常用认证标头集合 |
| `--include-static` | 否 | 同时测试静态资源(`*.css`、`*.js`、`*.png` 等);默认跳过 |
| `--timeout` | 否 | 每个请求的超时时间(秒),默认 10 |
## 输出示例
```
$ python3 harstorm.py --har examples/fixtures/sample.har
HARStorm examples/fixtures/sample.har · 6 request(s) · 1 host(s)
stripped headers: authorization, cookie, x-auth-token, x-csrf, x-csrf-token, x-xsrf-token
httpbin.org
├── GET /anything/profile 200 STUCK auth-gap suspect
├── GET /anything/orders/42 200 STUCK auth-gap suspect
├── DELETE /anything/orders/42 200 STUCK auth-gap suspect
├── POST /anything/comments 200 STUCK auth-gap suspect
└── GET /basic-auth/user/pass 401 safe auth required
============================================================
4 stuck endpoint(s) · copy-paste curls below
============================================================
curl -X DELETE https://httpbin.org/anything/orders/42
curl -X POST https://httpbin.org/anything/comments -H 'Content-Type: application/json' -d '{"text":"hello"}'
curl -X GET https://httpbin.org/anything/orders/42
curl -X GET https://httpbin.org/anything/profile
next: paste each curl in a fresh terminal (no cookies) to confirm
```
内置的示例 HAR 文件位于 [`examples/fixtures/sample.har`](examples/fixtures/sample.har)。两种运行输出均位于 [`examples/`](examples/)。
## 法律免责声明
本工具仅供授权的安全测试与教育用途。
请仅针对您拥有或已获得明确书面许可的系统运行该工具。
作者不承担任何误用责任。未经授权的使用可能违反
当地、州或联邦法律。
## 作者
由 **Daniyal Nasir** 构建 · **网络安全顾问**、**渗透测试工程师**、**VAPT 顾问**、**漏洞赏金猎人**。
拥有 10 多年经验的资深 **进攻安全** 专业人士,曾为财富 500 强企业及全球 SaaS 平台提供 **Web 应用渗透测试**、**API 安全测试**、**移动应用渗透测试**、**云渗透测试** 以及 **红队演练** 服务。参与项目覆盖 **中东、亚洲、欧洲及北美** 地区,活跃于 **漏洞赏金** 与 **负责任的漏洞披露**,并与多家顶级科技公司保持合作。认证包括:**OSCP**、**LPT**、**CPENT**、**CEH**、**CISA**、**CISM**、**CASP+**。
LinkedIn: https://www.linkedin.com/in/daniyalnasir
官网: https://www.daniyalnasir.com
## 许可证
MIT,详见 [LICENSE](LICENSE)。
标签:API安全, Broken Access Control, Burp Suite, Chrome DevTools, CISA项目, Cloudflare, Curl测试, Firefox DevTools, HAR文件分析, HTTP请求重放, JSON输出, MITRE ATT&CK, Python, Streamlit, T1059, T1190, Web安全, 会话重放, 威胁情报, 安全测试, 开发者工具, 攻击性安全, 无后门, 未认证端点, 端点枚举, 结构化查询, 自动化安全, 蓝队分析, 认证绕过, 访问控制, 逆向工具