0xwi11iam/Medusa
GitHub: 0xwi11iam/Medusa
Medusa 是一款由 LangGraph 和 Re-Act 架构驱动的开源 AI 红队框架,将侦察、漏洞利用到报告生成的完整渗透测试流程自动化串联。
Stars: 1 | Forks: 0
Medusa
Autonomous Offensive Security — Built for Hunters
一款由 LangGraph 驱动的自主 agent,专为漏洞赏金猎人、安全研究人员和 CTF 选手设计。将侦察、漏洞利用和后渗透串联成一条完整的 pipeline。部署并行 subagent,查询持久化知识图谱,生成带有攻击链图表的审计追踪记录,并输出详尽的评估报告——一切皆可在你的终端中完成。从第一个数据包到最终报告,在每一个关键步骤中都包含人工监督。
67 Tools · 40 Modules · 45+ Attack Skills · Parallel Subagents · LLM Supervisor · 20 Bridge Modules · 28 Tests Passing
15-step autonomous engagement: nmap >> .git leak >> AWS IAM keys >> JWT forge >> SSRF metadata >> S3 bucket >> 3 flags captured. $0.42 in API costs.
目录
面向人群? · Pipeline · 靶场实验室 · 快速开始 · 架构 · 配置 · 监督器 · Subagent · 运行控制 · 测试 · 可移植性 · 维护者
面向人群?
|
|
|
|
从侦察到 Flag — 一条连续的 Pipeline
侦察 >> 凭据提取 >> JWT 伪造 >> 权限提升 >> 捕获 Flag >> 审计报告
Medusa 不仅仅是扫描。它会思考。每一次迭代都遵循由 LangGraph 驱动的结构化“思考 >> 行动 >> 观察”循环。该 agent 能够发现服务、从暴露的 .git 目录和 source map 中提取机密信息、伪造身份验证 token、通过 GraphQL 批量赋值和 JWT 攻击提升权限、利用 SSTI 和命令注入、将 SSRF 串联至内部 API,并捕获 flag——同时由一个零成本的监督器监视循环、错失的机会和停滞状态。每一步都会记录到持久化的审计追踪中。最后,将生成一份全面的 Markdown 报告,其中包含 Mermaid 攻击链图表、漏洞发现表格以及完整的执行追踪记录。
刻意设计漏洞的靶场实验室 -- 内置
两个实践性靶场,在贴近真实的 SaaS 应用中总共包含 23 个漏洞。无需 Docker,无外部依赖——仅需 Python 和 Flask。
 ### CloudBoard Next -- 3 服务现代 SaaS 一个贴近现实的多服务 SaaS 应用,包含 JWT 认证、GraphQL、SSE 实时通知、多租户隔离、OAuth 以及旧版管理面板。迫使 agent 跨服务串联攻击。 ``` python3 medusa/lab/cloudboard_next/app.py ```
| # | 漏洞 | 位置 | 难度 | 攻击链 |
|---|---|---|---|---|
| 1 | SQLi 登录绕过 | POST /login :5800 | 简单 | admin' OR '1'='1' -- |
| 2 | JWT alg:none + kid 注入 | 所有 JWT endpoint | 中等 | 伪造 admin token >> 访问 /admin |
| 3 | OAuth 开放重定向 | /oauth/authorize | 中等 | 通过 redirect_uri 绕过窃取 Token |
| 4 | GraphQL 内省 + IDOR | /graphql | 中等 | Schema 导出 >> 跨租户用户查询 |
| 5 | GraphQL 批量赋值 | updateProfile mutation | 中等 | 将任意用户的 role 设置为 admin |
| 6 | SSTI(邮件模板) | /admin/templates | 中等 | {{config}} >> 服务器 RCE |
| 7 | 存储型 XSS + SSE 广播 | 评论 >> /ws | 中等 | <script> >> 所有已连接客户端 |
| 8 | SSRF(webhook 测试器) | /admin/webhooks/test | 困难 | >> :5801 内部 API >> flag |
| 9 | XXE(SVG OCR 上传) | /files/ocr | 困难 | DOCTYPE entity >> 文件读取 |
| 10 | 命令注入(导出) | /admin/export | 中等 | ; cat /tmp/flag |
| 11 | 暴露的 .git 目录 | /.git/HEAD | 简单 | >> JWT 密钥 + API 密钥泄露 |
| 12 | Source map 泄露 | /static/js/app.js.map | 简单 | >> FLAG{src_map_leak} |
| 13 | IDOR 资料视图 | /profile/view/<id> | 简单 | 跨租户查看任意用户 |
| 14 | 内部 API 无认证 | :5801/api/admin/* | 中等 | Header 欺骗 >> config + flag |
| 15 | 旧版后台弱认证 | :5802/login | 简单 | 硬编码 Token 绕过 |
快速开始
### 前置条件 | 要求 | 详情 | |:------------|:--------| | **Python** | 3.10+ | | **OS** | macOS, Linux, Windows | | **API 密钥** | DeepSeek, HuggingFace, Gemini 或 Anthropic | ``` git clone https://github.com/medusa/medusa-security.git cd medusa-security pip install -r medusa/requirements.txt # 设置你的 API key echo "DEEPSEEK_API_KEY=sk-..." > .env # 启动 python3 medusa/main.py ``` ## 架构 ``` graph TB subgraph "Medusa Core" MAIN[main.pyRich TUI Entry] GRAPH[agent_graph.py
LangGraph State Machine] THINK[think_node.py
ReAct Reasoning + 7 Action Types] TOOLS[dispatch.py
67 Tools - 40 Modules] SUP[supervisor.py
Zero-Cost Pattern Detector] end subgraph "Tool System" NMAP[nmap] & SQLMAP[sqlmap] & GOBUSTER[gobuster] META[metasploit] & HYDRA[hydra] & NUCLEI[nuclei] MORE[31 more...] end subgraph "Agent Workspace" REPORTS[reports/] AUDIT[audit_trails/] KG[knowledge_graph.json] end MAIN --> GRAPH GRAPH --> THINK THINK --> TOOLS TOOLS --> NMAP & SQLMAP & GOBUSTER & META & HYDRA & NUCLEI & MORE SUP -.->|every 5 iters| GRAPH TOOLS --> REPORTS & AUDIT & KG ``` ## 配置 ``` { "provider": "deepseek", "deepseek_model": "deepseek-v4-flash", "max_iterations": 100, "temperature": 0.4, "supervisor_interval": 5, "cost_hard_cap_usd": 500.0, "mode_deploy_subagent": true, "mode_audit_trail": true, "mode_hotreload_skills": true, "report_auto_export": true, "report_format": "markdown", "subagent_count": 2 } ``` | 提供商 | 模型 | 环境变量 | |:---------|:-------|:--------| | **DeepSeek** | `deepseek-v4-flash`, `deepseek-v4-pro` | `DEEPSEEK_API_KEY` | | **HuggingFace** | Qwen, GLM, DeepSeek via TGI | `HF_API_KEY` | | **Gemini** | `gemini-2.5-pro`, `gemini-2.5-flash` | `GEMINI_API_KEY` | | **Anthropic** | `claude-opus-4-7`, `claude-sonnet-4-6` | `ANTHROPIC_API_KEY` | ## 监督器 -- 零成本监督 每 5 次迭代静默运行一次。纯模式匹配——**无 LLM 调用,零 API 成本**。 | 模式 | 触发条件 | 介入操作 | |:--------|:--------|:-------------| | 循环 | 连续 3 次使用同一工具 | *“尝试一种不同的方法。切换工具或攻击向量。”* | | 记录陷阱 | 4 轮及以上的记录/任务 | *“停止记录。立即开始漏洞利用。”* | | 遗漏 Flag | 发现 `FLAG{...}` 但未提取 | *“立即使用 claim_flag 提取它。”* | | 未跟进的漏洞 | 发现漏洞但未跟进 | *“立即测试该漏洞。不要转移目标。”* | | 失败的 Subagent | 3 个及以上 subagent 返回空结果 | *“Subagent 持续失败。你自己运行任务。”* | | 停滞 | 5 轮迭代无新信息 | *“彻底改变方法或直接生成报告。”* | ## Subagent 系统 ``` { "action": "deploy_subagent", "subagent_task": "SQLi on /login || XSS on /search || SSTI on /profile", "thought": "Parallelizing attack vectors across all endpoints" } ``` | 属性 | 值 | 描述 | |:---------|:------|:------------| | 最大并发数 | 3 | 通过 semaphore 控制 | | 最大步数 | 5 | 单个 subagent 迭代限制 | | LLM 超时 | 45秒 | 单个 subagent 的 LLM 调用 | | 工具超时 | 60秒 | 单次工具执行 | | 总超时 | 95秒 | 部署的硬性上限 | | 崩溃隔离 | 是 | 单个失败不会导致其他 subagent 崩溃 | | 链持久化 | 是 | 结果存入 chain_findings_memory | ## 运行控制 | 命令 | 上下文 | 动作|:--------|:--------|:-------| | `Ctrl+C` | 运行期间 | 暂停 agent,进入引导模式 | | `/report` | 暂停期间 | 强制生成 Markdown 报告 + 结束审计 | | `/audit` | 暂停期间 | 打印当前审计追踪记录 | | `/state` | 暂停期间 | 打印 agent 状态(阶段、迭代次数、成本) | | `/sessions` | 暂停期间 | 列出已保存的会话以供重放 | ``` #1 + informational Starting reconnaissance on ports 5800, 5801, 5802... > execute_terminal nmap -sV -sC -p 5800,5801,5802 127.0.0.1 output BG JOB a7ebbf04 -- Check: job_status a7ebbf04 Supervisor: You found a FLAG in the output but didn't claim it! ``` ## 测试 ``` python3 medusa/tests/test_agent_helpers.py ``` ``` [PASS] test_prompt_safety [PASS] test_hard_guardrail [PASS] test_error_class [PASS] test_json_utils [PASS] test_parsing [PASS] test_productivity [PASS] test_state [PASS] test_skill_loader [PASS] test_tool_registry [PASS] test_workspace_fs 10/10 tests passed ``` ## 可移植性 所有路径均通过 `Path(__file__).resolve().parent` 解析。可随意重命名项目文件夹——一切仍将正常运行。 ``` medusa/main.py >> os.path.dirname(os.path.dirname(os.path.abspath(__file__))) medusa/modules/loader.py >> Path(__file__).resolve().parent.parent medusa/tools/dispatch.py >> Path(__file__).resolve().parent.parent ``` 环境要求:`medusa/` 和 `Modules/` 位于同一层级,`medusa_agent/` 位于项目根目录,符号链接 `medusa/medusa_agent >> ../medusa_agent`
维护者
|
AI/ML engineer and security researcher. Designed the LangGraph state machine, subagent spawning system, supervisor pattern detector, knowledge graph integration, and 15-vulnerability CloudBoard Next lab. GitHub |
Roland Poon: Co-Creator & Marketing Our marketing leader specializing in spreading this project to everyone who should have it. GitHub |
基于 MIT 许可协议授权 - 灵感来源于 RedAmon & Sakana Fugu



