peaktwilight/pwnkit

GitHub: peaktwilight/pwnkit

开源自主渗透测试框架,用多轮 AI 代理发现并验证 LLM 端点、Web 应用和代码仓库中的安全漏洞。

Stars: 6 | Forks: 1

pwnkit

pwnkit

通用自主渗透测试框架
扫描 LLM 端点。审计 npm 包。审查源代码。渗透测试 Web 应用。重新利用以消除误报。

npm version license CI stars pwnkit verified

pwnkit Demo

快速开始 · 命令 · 工作原理 · 扫描对象 · 对比 · CI/CD · 关于

pwnkit 是一个开源的代理式安全工具包。研究代理跨 LLM 端点、Web 应用程序、npm 包和 Git 仓库发现漏洞、发起攻击并编写概念验证代码。然后,盲验证代理 —— 仅给定 PoC 和文件路径,而非推理过程 —— 独立复现每个发现,以**消除误报**。没有模板,没有静态规则 —— 像攻击者一样思考的多轮代理推理。 一条命令。零配置。每个发现都被重新利用或丢弃。 ## 快速开始 ``` # 扫描 LLM 端点 npx pwnkit-cli scan --target https://your-app.com/api/chat # 审计 npm 包漏洞 npx pwnkit-cli audit lodash # 代码库深度安全审查 npx pwnkit-cli review ./my-ai-app # 或者直接将 pwnkit 指向目标 —— 它会自动检测该做什么 npx pwnkit-cli express # audits npm package npx pwnkit-cli ./my-repo # reviews source code npx pwnkit-cli https://github.com/user/repo # clones and reviews npx pwnkit-cli https://example.com # scans web endpoint ``` 就是这样。pwnkit 发现你的攻击面,发起针对性攻击,验证发现,并生成报告 —— 全程不到 5 分钟。 ### 自动检测 `pwnkit ` 无需显式子命令即可理解你的意图: | 输入 | pwnkit 执行的操作 | |-------|-----------------| | `pwnkit express` | 将其视为 npm 包名并运行 `audit` | | `pwnkit ./my-repo` | 检测到本地路径并运行 `review` | | `pwnkit https://github.com/user/repo` | 克隆仓库并运行 `review` | | `pwnkit https://example.com` | 检测到 HTTP URL 并运行 `scan` | 显式子命令(`scan`、`audit`、`review`)仍然有效 —— 自动检测只是在此基础上的一层便利功能。 ## 命令 所有命令均可通过 `npx pwnkit-cli ` 使用。显式子命令是可选的 —— 得益于自动检测,`npx pwnkit-cli ` 适用于大多数用例(见上文 [自动检测](#auto-detect))。 pwnkit 提供五条命令 —— 从快速 API 探测到深度源代码级审计: | 命令 | 功能 | 示例 | |---------|-------------|---------| | **`scan`** | 探测 LLM 端点、MCP 服务器和 AI API 的漏洞 | `npx pwnkit-cli scan --target https://api.example.com/chat` | | **`audit`** | 安装任何 npm 包并结合静态分析 + AI 审查进行安全审计 | `npx pwnkit-cli audit express@4.18.2` | | **`review`** | 对本地仓库或 GitHub URL 进行深度源代码安全审查 | `npx pwnkit-cli review https://github.com/user/repo` | | **`history`** | 浏览过往扫描,包括状态、深度、发现数量和持续时间 | `npx pwnkit-cli history --limit 20` | | **`findings`** | 查询、过滤和检查所有扫描中已验证的发现 | `npx pwnkit-cli findings list --severity critical` | ## 工作原理 pwnkit 在“研究-然后-验证”的流水线中运行自主 AI 代理。每个代理使用工具(`read_file`、`run_command`、`send_prompt`、`save_finding`)并做出多轮决策 —— 根据所学内容调整策略: ``` +-----------+ +------------------+ +-----------+ | RESEARCH | --> | BLIND VERIFY | --> | REPORT | | (Discover | | (PoC + path only | | (Output) | | + Attack | | no reasoning) | | | | + PoC) | +------------------+ +-----------+ +-----------+ Runs in parallel Only confirmed Single agent per finding — findings in SARIF, session: recon, independently Markdown, and JSON payloads, and reproduces or with severity + proof-of-concept kills finding remediation ``` | 代理 | 角色 | 功能 | |-------|------|-------------| | **Research** | 发现 + 攻击 + PoC | 映射端点、检测模型、提取系统提示词、制作多轮攻击(提示词注入、越狱、工具投毒、数据窃取)并编写概念验证代码 —— 全部在一个代理会话中完成 | | **Verify** | 盲验证 | 仅获取 PoC 代码和文件路径 —— 不包含研究代理的推理过程。独立追踪数据流并复现每个发现。无法复现?作为误报消除 | | **Report** | 输出 | 用于 GitHub Security 标签页的 SARIF,用于人类阅读的 Markdown,用于流水线的 JSON —— 仅包含带有严重性评分和修复建议的确认发现 | **盲验证是核心差异点。** 验证代理不会受到研究代理推理过程的影响 —— 这与双盲同行评审的原则相同。不再需要分类整理 200 个结果为“无”的“可能提示词注入”。 ## pwnkit 扫描什么 | 目标 | 命令 | 方式 | |--------|---------|-----| | **LLM 端点** — ChatGPT, Claude, Llama APIs, 自定义聊天机器人 | `scan --target ` | HTTP 探测 + 多轮代理攻击 | | **MCP 服务器** — 工具模式、输入验证、授权 | `scan --target --mode mcp` | 连接服务器、枚举工具、逐一测试 | | **Web 应用与 API** — AI 驱动的 Copilot、代理、RAG 流水线 | `scan --target --mode deep --repo ./src` | API 探测 + 源代码分析 | | **Web 渗透测试** — SQLi, XSS, SSRF, auth bypass, IDOR | `scan --target --mode web` | 完全自主的 Web 渗透测试,代理根据发现调整策略 | | **npm 包** — 依赖供应链、恶意代码 | `audit ` | 在沙箱中安装,运行 semgrep + AI 代码审查 | | **Git 仓库** — 源代码级安全审查 | `review ` | 使用 Claude Code, Codex 或 Gemini CLI 进行深度分析 | ## 示例输出 查看 [上面的演示 GIF](#) 了解真实扫描输出,或自行运行: ``` npx pwnkit-cli scan --target https://your-app.com/api/chat --depth quick ``` 获取带有动画攻击回放的详细视图: ``` npx pwnkit-cli scan --target https://your-app.com/api/chat --verbose ``` ## 扫描深度 | 深度 | 测试用例 | 时间 | |-------|-----------|------| | `quick` | ~15 | ~1 分钟 | | `default` | ~50 | ~3 分钟 | | `deep` | ~150 | ~10 分钟 | pwnkit 是一个代理式框架 —— 自带 AI。使用你的 API 密钥(OpenRouter, Anthropic, OpenAI, Ollama),或通过 `--runtime claude` 或 `--runtime codex` 使用 Claude Code CLI 或 Codex CLI 及其现有订阅。 ``` # CI 快速扫描 npx pwnkit-cli scan --target https://api.example.com/chat --depth quick # 上线前深度审计 npx pwnkit-cli scan --target https://api.example.com/chat --depth deep # 使用 Claude Code 进行 Source + API 扫描 npx pwnkit-cli scan --target https://api.example.com/chat --runtime claude --mode deep --repo ./src # MCP server 审计 npx pwnkit-cli scan --target https://mcp-server.example.com --mode mcp --runtime claude # 完整 Web 渗透测试 (SQLi, XSS, SSRF, auth bypass, IDOR) npx pwnkit-cli scan --target https://example.com --mode web --runtime claude # 审计 npm 包 npx pwnkit-cli audit react --depth deep --runtime claude # 审查 GitHub repo npx pwnkit-cli review https://github.com/user/repo --runtime codex --depth deep ``` ## 运行时模式 自带代理 CLI —— pwnkit 进行编排: | 运行时 | 标志 | 最适用于 | |---------|------|----------| | `api` | `--runtime api` | CI、快速扫描 —— 默认使用 OpenRouter (`claude-sonnet-4.6`),无依赖(默认) | | `claude` | `--runtime claude` | 攻击生成、深度分析 —— 启动 Claude Code CLI | | `codex` | `--runtime codex` | 验证、源代码分析 —— 启动 Codex CLI | | `gemini` | `--runtime gemini` | 大上下文源代码分析 —— 启动 Gemini CLI | | `` | `--runtime ` | 多提供商灵活性 —— 启动 CLI | | `auto` | `--runtime auto` | 整体最佳 —— 自动检测已安装的运行时,为每个阶段选择最佳选项 | 结合扫描模式: | 模式 | 标志 | 描述 | |------|------|-------------| | `probe` | `--mode probe` | 向 API 发送 Payload,检查响应(默认) | | `deep` | `--mode deep` | API 探测 + 源代码审计(需要 `--repo`) | | `mcp` | `--mode mcp` | 连接到 MCP 服务器,枚举工具,测试每个工具的安全问题 | | `web` | `--mode web` | 完整 Web 渗透测试 —— SQLi, XSS, SSRF, auth bypass, IDOR | ## 对比 | 功能 | pwnkit | promptfoo | garak | semgrep | nuclei | |---------|--------|-----------|-------|---------|--------| | **代理式多轮流水线** | 是 —— 具有工具使用能力的自主代理 | 否 —— 单一运行器 | 否 —— 单一运行器 | 否 —— 基于规则 | 否 —— 模板运行器 | | **验证(无误报)** | 是 —— 重新利用以确认 | 否 | 否 | 否 | 否 | | **LLM 端点扫描** | 是 —— 提示词注入、越狱、数据窃取 | 是 —— 红队测试 | 是 —— 探针 | 否 | 否 | | **Web 渗透测试 (SQLi, XSS, SSRF, IDOR)** | 是 —— `--mode web` | 否 | 否 | 否 | 部分 —— 仅模板 | | **MCP 服务器安全** | 是 —— 工具投毒、模式滥用 | 否 | 否 | 否 | 否 | | **npm 包审计** | 是 —— Semgrep + AI 审查 | 否 | 否 | 是 —— 仅规则 | 否 | | **源代码审查** | 是 —— AI 驱动的深度分析 | 否 | 否 | 是 —— 仅规则 | 否 | | **OWASP LLM Top 10** | 是 —— 覆盖 8/10 | 部分 | 部分 | 不适用 | 不适用 | | **SARIF + GitHub Security 标签页** | 是 | 是 | 否 | 是 | 是 | | **一条命令,零配置** | 是 —— `npx pwnkit-cli scan` | 需要 YAML 配置 | 需要 Python 设置 | 需要规则配置 | 需要模板 | | **开源** | 是 —— Apache-2.0 | 是 —— (已被 OpenAI 收购) | 是 —— MIT | 是 —— LGPL / 付费 Pro | 是 —— MIT | | **定价** | 免费 + 自带 AI | 不定 | 免费 (本地) | 免费 (OSS) / 付费 (Pro) | 免费 | pwnkit 并非要取代 semgrep 或 nuclei —— 它涵盖了它们无法看到的 AI 特定攻击面。请配合使用。 ## GitHub Action 将 pwnkit 添加到你的 CI/CD 流水线: ``` name: AI Security Scan on: [push, pull_request] permissions: contents: read security-events: write jobs: pwnkit: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Run pwnkit uses: peaktwilight/pwnkit/action@v1 with: target: ${{ secrets.STAGING_API_URL }} depth: default # quick | default | deep fail-on-severity: high # critical | high | medium | low | info | none env: OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }} - name: Upload SARIF uses: github/codeql-action/upload-sarif@v3 with: sarif_file: pwnkit-report/report.sarif ``` 发现将直接显示在你仓库的 **Security** 标签页中。 ### 徽章 将 pwnkit 徽章添加到你的 README: ``` [![pwnkit](https://pwnkit.com/badge/YOUR_ORG/YOUR_REPO)](https://pwnkit.com) ``` 徽章根据你的 GitHub Actions 扫描结果自动更新。显示 `verified`(绿色)、发现数量(黄色/红色)或 `not scanned`(灰色)。 也可作为 [shields.io 端点](https://shields.io/endpoint) 使用: ``` https://img.shields.io/endpoint?url=https://pwnkit.com/badge/YOUR_ORG/YOUR_REPO/shield ``` ## 发现管理 每个发现都持久化在本地 SQLite 数据库中。跨扫描查询: ``` # 列出关键发现 npx pwnkit-cli findings list --severity critical # 按类别筛选 npx pwnkit-cli findings list --category prompt-injection --status confirmed # 检查包含完整证据的特定发现 npx pwnkit-cli findings show NF-001 # 浏览扫描历史 npx pwnkit-cli history --limit 10 ``` 发现生命周期:`discovered → verified → confirmed → scored → reported`(如果验证失败则为 `false-positive`)。 ## 路线图 - [x] 核心自主代理流水线(研究、盲验证、报告) - [x] OWASP LLM Top 10 覆盖 (8/10) - [x] SARIF 输出 + GitHub Action - [x] MCP 服务器扫描 - [x] npm 包审计 - [x] 源代码审查(本地 + GitHub) - [x] 多运行时支持 (Claude, Codex, Gemini) - [x] 多轮代理攻击(代理根据响应调整 Payload) - [x] Web 渗透测试模式 (SQLi, XSS, SSRF, auth bypass, IDOR) - [ ] RAG 流水线安全(投毒、提取) - [ ] 代理式工作流测试(多工具链) - [ ] VS Code 扩展 - [ ] 团队仪表板与历史追踪 - [ ] SOC 2 / 合规性报告生成 ## 关于 由一位在 node-forge、mysql2、uptime-kuma、liquidjs、picomatch 和 jspdf 中拥有 [7 个已发布 CVE](https://doruk.ch/blog) 的安全研究员创建。 pwnkit 是一个通用自主渗透测试框架。它的存在是因为现代攻击面 —— LLM 端点、MCP 服务器、AI 驱动的 Web 应用 —— 需要能够适应的代理,而不是一成不变的静态规则。你无法对语言模型进行 `nmap`。你也无法为尚未发明的越狱编写规则。传统的 Web 扫描器无法理解上下文 —— 它们会漏掉分页 API 中的 IDOR 和隐藏在 AI 流水线回调中的 SSRF。 pwnkit 使用像攻击者一样思考的自主代理,在扫描中途调整策略,并在报告之前重新利用每个发现。结果是真实的漏洞,零噪音。 ## 贡献 欢迎贡献!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解指南。 ``` git clone https://github.com/peaktwilight/pwnkit.git cd pwnkit pnpm install pnpm test ``` ## 许可证 [Apache 2.0](LICENSE) —— 随意使用、分叉、发布。
标签:AI安全, AI风险缓解, Apache-2.0, Chat Copilot, DLL 劫持, Git仓库审计, LLM端点安全, LNA, MITM代理, npm包安全, PoC生成, XML注入, 大语言模型, 开源安全工具, 文档安全, 暗色界面, 渗透测试框架, 网络安全, 自主安全研究, 自动化攻击, 误报过滤, 逆向工程平台, 配置审计, 防御, 隐私保护