own2pwn-fr/a2pwn

GitHub: own2pwn-fr/a2pwn

a2pwn 是一个基于 LangGraph 多 agent 编排的自主 Web 渗透测试工具,通过对抗性验证和流量沙箱实现零误报的漏洞发现与证据固化。

Stars: 2 | Forks: 0

a2pwn

一个自主的、基于证据的 Web 渗透测试编排器。
一个 LangGraph master 会分发经过对抗性验证的子 agent,对真实目标进行侦察和漏洞利用 —— 每一个请求都通过 burpwn 沙箱路由,每一个发现都在被允许进入报告之前,由确定性预言机重新推导得出。

## 它是什么 a2pwn 之于自主 agent,就如同完整的测试方法论之于人类渗透测试人员:它 不会仅仅停留在检查安全头和发送两个探测请求上。它会深入挖掘 —— 反射型/存储型/DOM型/突变型 XSS、盲打和 OOB SQLi、SSTI、SSRF(云元数据 / DNS重绑定 / gopher)、请求走私(CL.TE / TE.CL / CL.CL / TE.TE)、HTTP/2+ 和 HTTP/3 异步脱节、逐跳 header 注入、缓存投毒 / CPDoS、Web 缓存欺骗、Host header 攻击、CORS、JWT/认证漏洞、IDOR/BOLA、跨链访问控制、 原型链污染、反序列化、XXE、路径遍历 / LFI、开放重定向、竞态条件以及 JS 供应链(解包应用 → 识别库 → 拉取代码 → 检查已知 CVE → 在实时站点上验证)—— 将各个发现中的基础攻击手法串联起来。 两项核心准则驱动着所有的设计决策: 1. **架构上保证历史记录纯净。** master 仅在追加式的 `(task → clean result)` 记录链条上进行推理。子 agent 的澄清问答、ReAct 记录、验证者的 批判与重试都仅存在于无状态的子图中存活和消亡 —— 它们*绝不*会合并到 master 的规范历史中。master 看到的永远是子 agent “一次就成功”。这是 在结构上强制执行的(master 状态没有任何通道可以让记录泄露出去),而不是 靠人为约束。 2. **0 误报 (0-FP) 证据。** 只有当确定性预言机 (差分 / OOB 回调 / 标记 / 时序 / 双身份)*在沙箱内部*重新推导出该发现,**并且**有一个非空的 burpwn 流量批次证明确实捕获到了相关流量时,该发现才会被标记为 `confirmed`。一个 捕获到零流量的网络操作是一个明显的警报(流量逃脱了沙箱),而绝不 是静默的证据。 ## 安装与运行 ``` # 一次性,无 clone(uv 安装到临时 env 中) uvx a2pwn run --target https://app.example.com --objective "find and prove exploitable web vulns" ``` 或者从代码检出运行: ``` uv sync uv run a2pwn run --target https://ginandjuice.shop --objective "audit the shop end to end" --yes ``` 发现的漏洞结果和每个批次的 HAR 导出文件将存放在运行目录下。 ### 环境要求 - 位于 `PATH` 路径下的 [burpwn](https://github.com/own2pwn-fr/burpwn)(沙箱 + 拦截代理)。运行 一次 `burpwn doctor` 以确认主机支持无 root 权限的用户/网络命名空间。 - 一个模型后端(见下文)。默认配置需要一个可用的 Claude Code 登录 —— 无需其他。 ## 后端 a2pwn 通过一个工厂函数(`a2pwn.backends.make_model`)与任何 LangChain 聊天模型进行通信。为每个角色(`master`、`clarifier`、`executor`、`verifier`)选择一个 提供商;验证者默认使用 Opus 级别的模型,并且要求与执行者不同,以保持验证的对抗性。 | `provider` | 认证 | 额外依赖 | |-------------------|-----------------------------|-----------------| | `claude-code` | **Claude Code 订阅(OAuth,默认)** | 内置 | | `anthropic` | `ANTHROPIC_API_KEY` | 内置 | | `openai` | `OPENAI_API_KEY` | `a2pwn[openai]` | | `bedrock_converse`| AWS credentials | `a2pwn[aws]` | | `google_vertexai` | GCP ADC | `a2pwn[vertex]` | | `litellm` | 视提供商而定 | `a2pwn[litellm]`| | `codex` / `antigravity` | 订阅(尽力而为,回退到密钥) | 内置 | ## 工作原理 ``` MASTER graph (dispatch-only; never touches a target) bootstrap → plan → route_dispatch ──▶ [Send × N] run_subagent ──▶ integrate → plan | report │ (FORK BOUNDARY) ▼ SUB-AGENT graph (own state, checkpointer=False, dies on return) clarify → [Send × question] answer_one → compose_prompt → execute (ReAct: skills + tools + burpwn) → verify (adversarial, oracle) → distill → clean result ``` - master 可以分发**单个**任务、并行的**批次**任务,或者**验证工作流**。 - **澄清分叉(“比特币分叉”):** 子 agent 会根据需要提出尽可能多的问题;每个问题都由一个独立的分叉并行回答,该分叉注入了 master 上下文的*精简*快照。 这些都不会进入 master 的历史记录。 - **对抗性验证:** 一个不同的、更强大的模型通过其预言机重新推导每一个候选结果,并 拒绝任何没有真实捕获证据的内容。一次**独立的**第二次分发会在干净的环境下复现 已确认的发现;协调机制只会*提升*(绝不会静默丢弃) 某个发现。 - **证据 = 高亮的 burpwn 批次。** 每个发现的请求都被分组到专用的 工作区中,被打上标签(例如 `xss`,红色)并进行注解 —— 因此“此批次 == XSS”是可查询的,并且 能干净地导出为 HAR。 ## 技能与工具 - **技能**(`skills/`)是精心策划的、自我描述的安全知识 —— 包含忠实于 Claude-Code 的 frontmatter 以及 a2pwn 的扩展(标签、工具、payload 来源、一个 `verify.py` 预言机)。子 agent 通过 FTS/标签预过滤器发现它们,然后加载相关的一个或多个技能。 - **Payload** 通过*引用*来自固定的内置来源 ([PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings) MIT, [HackTricks](https://github.com/HackTricks-wiki/hacktricks) CC-BY-SA,nuclei-templates MIT) —— 绝不 复制。运行 `git submodule update --init` 来填充 `vendor/`。参见 `ATTRIBUTION.md`。 - **工具**(nuclei、katana、hydra、nmap、ffuf、sqlmap、subfinder、httpx、webcrack…)通过 `burpwn exec` 运行,以便捕获它们的流量。无法被捕获的工具(例如,位于自己 netns 中的 Docker)会在警告下运行,并且永远不会声称掌握了证据。 ## 状态 `0.1.0` —— 早期阶段。编排核心、后端、burpwn 集成、预言机、目录、报告和 CLI 已就绪,并且纯净历史 / 协调 / 捕获警报等不变量正在测试中。 基础技能库正在不断扩展,以在各个类别上达到完全的深度。 ## 许可证 [AGPL-3.0-or-later](LICENSE)。
标签:CISA项目, LangGraph, LLM代理, Web渗透测试, 红队自动化, 自动化安全工具, 逆向工具