call-yog/pocforge

GitHub: call-yog/pocforge

一款 Web 漏洞扫描器,区别于同类之处在于为每个发现的漏洞自动生成可运行的 PoC 工件,显著缩短漏洞初审时间。

Stars: 0 | Forks: 0

# pocforge [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/call-yog/pocforge/actions/workflows/ci.yml) [![license: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![python: 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](pyproject.toml) 一款为您自动编写 PoC 的 Web 漏洞扫描器。 大多数扫描器在得出*“存在漏洞:是”*时便止步不前。而这也正是漏洞初审员通常会直接丢弃的那一半结果。`pocforge` 会为每一个发现生成一个可运行的工件——例如 HTML 页面、curl 命令或自动提交的表单——审查者可以直接在浏览器中打开它,直观地看到漏洞被触发。 它的重点不在于提供更好的检测,而在于缩短漏洞初审时间。 ## 检测内容 | ID | 漏洞 | 严重程度范围 | PoC 工件 | | ---------- | --------------------------------------------------- | -------------- | ------------------------------------- | | CORS-001 | 反射攻击者 Origin + 凭据 | CRITICAL | 读取受害者数据的 HTML | | CORS-002 | 反射攻击者 Origin,无凭据 | MEDIUM | HTML(未认证读取) | | CORS-003 | 接受 `Origin: null` + 凭据 | HIGH | 沙盒 iframe HTML | | REDIR-001 | 开放重定向(基础 + 5 种绕过 payload) | HIGH / MEDIUM | 可点击 URL + curl 复现 | | CSRF-001 | 无 anti-CSRF token 的 POST 表单 | HIGH / MEDIUM | 自动提交的 HTML 表单 | | CLICK-001 | 页面可被嵌入框架(无 XFO,无 `frame-ancestors`) | HIGH | 覆盖式点击劫持页面 | 运行 `pocforge --list-checks` 可从工具中打印此列表。 ## 无法实现的功能 - **认证扫描。** 不涉及登录流程,也不处理会话。如果您需要 cookie,请通过 `--burp` 路由流量,让代理去添加它们。 - **爬虫。** 请直接提供 URL,它只会测试这些 URL,不会对您的范围文件进行蜘蛛爬取。 - **将 `ACAO: *` 视为一个发现。** 浏览器拒绝在这种情况下发送凭据,将其作为漏洞上报只会让您在 HackerOne 上损失声誉。 - **隐藏流量。** 每次探测都会携带 `User-Agent: pocforge/...` 标头。请假定 WAF 已经发现了您。 ## 安装 ``` pip install -e . ``` 要求 Python 3.10+。 ## 用法 ``` # 单个 URL → 将 markdown 报告打印到 stdout pocforge https://target.example.com/ # 单个 URL → 将 report.md 和每个 PoC 文件写入到一个目录中 pocforge https://target.example.com/ -o reports/target/ # 批量 pocforge -f targets.txt -o reports/ --burp # 通过管道传递给其他工具 pocforge https://target.example.com/ --json | jq '.[].findings[].check_id' # 强制所有流量通过 Burp (--proxy http://127.0.0.1:8080 --insecure 的别名) pocforge https://staging.example.com/ --burp ``` `-o` 目录包含: ``` reports/target/ ├── report.md ├── 01_cors_creds_poc.html ├── 02_cors_null_poc.html └── 03_clickjacking_poc.html ``` Markdown 是您的报告草稿。HTML 文件是您需要附加的证据。初审员打开它们,漏洞触发,然后他们支付赏金。 ## 示例输出 请参阅 [`examples/sample_run/`](examples/sample_run/) 获取真实的扫描输出(针对故意设置为存在漏洞的 httpbin 端点进行 CORS + 点击劫持测试)。 如需查看完整的实战示例——包括针对 Acunetix vulnweb 测试应用的发现、扫描以及最终生成的 PDF 报告——请参阅 [`examples/sample_engagement/`](examples/sample_engagement/)。该流程完全由 [`examples/recon_scan.ps1`](examples/recon_scan.ps1) 端到端驱动(域名 → Wayback URL 发现 → [`recon_filter.py`](examples/recon_filter.py) → pocforge)。 ## 架构 ``` pocforge/ ├── detectors/ # one file per bug class — (client, target) -> [Finding] ├── poc/ # one file per bug class — Finding -> PoC artifact ├── http_client.py # shared httpx.Client (proxy, timeout) ├── models.py # Finding / Evidence / PoC / ScanReport ├── reporter.py # markdown + per-PoC file output └── cli.py ``` 检测器是基于共享 HTTP 客户端的纯函数。添加一个新的漏洞类只需在 `detectors/` 中添加一个文件,在 `poc/` 中添加一个文件,并在注册表中添加一行。详情请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 测试 ``` pip install -e ".[dev]" pytest -v ``` 包含 13 个测试,全部针对 `httpx.MockTransport` 运行——无需网络,具有确定性,耗时约 1.5 秒。 ## 路线图 - 带有内置 OOB 回调监听器的 SSRF 检测器(无需 Burp Collaborator) - JWT alg 混淆 / 弱密钥 / `kid` 注入 - 竞争条件测试器(Kettle 风格的单数据包攻击) - GraphQL 别名批处理、内省滥用 - OAuth `redirect_uri` 链分析(与 REDIR-001 组合使用) ## 致谢 站在巨人的肩膀上: - [James Kettle](https://portswigger.net/research) — 单数据包竞争攻击、缓存投毒、CORS 研究 - [Sam Curry](https://samcurry.net/) 及汽车行业研究团队 — OAuth 链构造技术 - [PortSwigger Web Security Academy](https://portswigger.net/web-security) — 这里的每个检测器最先都是针对这些实验测试的 - [OWASP Cheat Sheet Series](https://cheatsheetseries.owasp.org/) — 修复文案的权威参考 ## 许可证 [MIT](LICENSE)。
标签:CISA项目, PoC生成, Python, Web安全, 加密, 动态分析, 安全规则引擎, 文档结构分析, 无后门, 漏洞扫描器, 蓝队分析, 运行时操纵, 逆向工具, 防御加固