daniyalnasir-root/HARStorm

GitHub: daniyalnasir-root/HARStorm

HARStorm 通过解析并重放 HAR 捕获,识别未携带认证信息时仍返回 200 的端点。

Stars: 0 | Forks: 0

# HARStorm — 使用 HAR 捕获重放以查找未认证端点 您从已登录的浏览器会话导出了一个 HAR 文件。其中一半的请求调用了开发者认为需要认证的端点。`HARStorm` 会剥离认证标头后重放每个请求,并告知您哪些请求在未认证情况下仍静默返回了 200。输出是一个按主机分组的树形结构及其端点判决结果,随后是为每个“卡住”的发现提供可直接复制粘贴的 curl 命令,以便您在全新终端中确认并继续推进报告。 [![Python 3.9+](https://img.shields.io/badge/python-3.9%2B-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Status: active](https://img.shields.io/badge/status-active-brightgreen.svg)](#) ## 概述 查找 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安全, 会话重放, 威胁情报, 安全测试, 开发者工具, 攻击性安全, 无后门, 未认证端点, 端点枚举, 结构化查询, 自动化安全, 蓝队分析, 认证绕过, 访问控制, 逆向工具