peaktwilight/pwnkit
GitHub: peaktwilight/pwnkit
开源自主渗透测试框架,用多轮 AI 代理发现并验证 LLM 端点、Web 应用和代码仓库中的安全漏洞。
Stars: 6 | Forks: 1
pwnkit
通用自主渗透测试框架
扫描 LLM 端点。审计 npm 包。审查源代码。渗透测试 Web 应用。重新利用以消除误报。
快速开始 ·
命令 ·
工作原理 ·
扫描对象 ·
对比 ·
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:
```
[](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注入, 大语言模型, 开源安全工具, 文档安全, 暗色界面, 渗透测试框架, 网络安全, 自主安全研究, 自动化攻击, 误报过滤, 逆向工程平台, 配置审计, 防御, 隐私保护