sundi133/dapper
GitHub: sundi133/dapper
一款基于 AI 多智能体架构的自主渗透测试工具,通过白盒源码分析结合黑盒动态攻击,自动发现并验证 Web 应用和 API 中的可利用漏洞,输出带 PoC 的专业报告。
Stars: 0 | Forks: 0
# Dapper 是你完全自主的 AI 渗透测试工具。
Dapper 的工作很简单:在其他任何人之前攻破你的 Web 应用。
你的“随性编码”蓝队的红队。
每个 Claude(编码者)都值得拥有自己的 Dapper。
## 🎯 什么是 Dapper?
Dapper 是一款 AI 渗透测试工具,它提供的是真实的漏洞利用,而不仅仅是警告。
Dapper 的目标是在其他人之前攻破你的 Web 应用。它会自主寻找你代码中的攻击向量,然后使用其内置浏览器执行真实的漏洞利用(例如注入攻击和身份验证绕过),以证明该漏洞确实是可以被利用的。
**Dapper 解决了什么问题?**
得益于 Claude Code 和 Cursor 等工具,你的团队可以不停地交付代码。但是你的渗透测试呢?一年才做一次。这就造成了一个*巨大的*安全缺口。在一年中的其余 364 天里,你可能在不知不觉中将漏洞发布到了生产环境。
Dapper 通过作为你随需应用的白盒渗透测试工具来填补这一空白。它不仅仅是发现潜在的问题。它执行真实的漏洞利用,提供漏洞存在的具体证据。这让你可以充满信心地交付,因为你知道每次构建都是安全的。
## ✨ 功能特性
- **完全自主运行**:只需一个命令即可启动渗透测试。AI 负责处理从高级 2FA/TOTP 登录(包括使用 Google 登录)和浏览器导航到最终报告的所有工作,期间无需任何人工干预。
- **带有可复现漏洞利用的渗透测试级别报告**:提供专注于已验证、可利用发现的最终报告,附带可复制粘贴的概念验证,以消除误报并提供可操作的结果。
- **涵盖关键的 OWASP 漏洞**:目前可识别并验证以下关键漏洞:注入、XSS、SSRF 以及失效的身份验证/授权,更多漏洞类型正在开发中。
- **代码感知的动态测试**:分析你的源代码以智能地指导其攻击策略,然后对运行中的应用程序执行基于实时浏览器和命令行的漏洞利用,以确认真实世界中的风险。
- **由集成安全工具驱动**:通过利用领先的侦察和测试工具(包括 **Nmap、Subfinder、WhatWeb 和 Schemathesis**)来增强其发现阶段,从而对目标环境进行深度分析。
- **并行处理以加快获取结果**:更快地获取你的报告。系统将最耗时的阶段并行化,同时运行针对所有漏洞类型的分析和利用。
## 📦 产品系列
Dapper 提供两个版本:
| 版本 | 许可证 | 适用场景 |
|---------|---------|----------|
| **Dapper Lite** | AGPL-3.0 | 安全团队、独立研究人员、测试自己的应用程序 |
| **Dapper Pro** | 商业版 | 需要高级功能、CI/CD 集成和专属支持的企业 |
## 📑 目录
- [什么是 Dapper?](#-what-is-dapper)
- [查看 Dapper 实际操作](#-see-dapper-in-action)
- [功能特性](#-features)
- [产品系列](#-product-line)
- [设置与使用说明](#-setup--usage-instructions)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [监控进度](#monitoring-progress)
- [停止 Dapper](#stopping-dapper)
- [使用示例](#usage-examples)
- [配置(可选)](#configuration-optional)
- [[实验性 - 不支持] Router 模式(替代提供商)](#experimental---unsupported-router-mode-alternative-providers)
- [输出和结果](#output-and-results)
- [示例报告](#-sample-reports)
- [架构](#️-architecture)
- [覆盖范围与路线图](#-coverage-and-roadmap)
- [免责声明](#️-disclaimers)
- [许可证](#-license)
- [社区与支持](#-community--support)
- [联系我们](#-get-in-touch)
## 🚀 设置与使用说明
### 前置条件
- **Docker** - 容器运行环境 ([安装 Docker](https://docs.docker.com/get-docker/))
- **AI 提供商凭证**(任选其一):
- **Anthropic API key**(推荐) - 从 [Anthropic 控制台](https://console.anthropic.com) 获取
- **Claude Code OAuth token**
- **[实验性 - 不支持] 通过 Router 模式使用替代提供商** - 通过 OpenRouter 使用 OpenAI 或 Google Gemini(请参阅 [Router 模式](#experimental---unsupported-router-mode-alternative-providers))
### 快速开始
```
# 克隆 Dapper
git clone https://github.com/sundi133/dapper.git
cd dapper
# 配置凭据(选择一种方法)
# 选项 A:导出环境变量
export ANTHROPIC_API_KEY="your-api-key" # or CLAUDE_CODE_OAUTH_TOKEN
# 选项 B:创建 .env 文件
cat > .env << 'EOF'
ANTHROPIC_API_KEY=your-api-key
EOF
# 运行 pentest
./dapper start URL=https://your-app.com REPO=your-repo
```
Dapper 将构建容器,启动工作流,并返回一个工作流 ID。渗透测试将在后台运行。
### 监控进度
```
# 查看实时 worker 日志
./dapper logs
# 查询特定 workflow 的进度
./dapper query ID=dapper-1234567890
# 打开 Temporal Web UI 以进行详细监控
open http://localhost:8233
```
### 停止 Dapper
```
# 停止所有 containers(保留 workflow 数据)
./dapper stop
# 完全清理(移除所有数据)
./dapper stop CLEAN=true
```
### 使用示例
```
# 基本 pentest
./dapper start URL=https://example.com REPO=repo-name
# 使用配置文件
./dapper start URL=https://example.com REPO=repo-name CONFIG=./configs/my-config.yaml
# 自定义输出目录
./dapper start URL=https://example.com REPO=repo-name OUTPUT=./my-reports
```
### 准备你的仓库
Dapper 期望目标仓库被放置在项目根目录的 `./repos/` 目录下。`REPO` 标志指的是 `./repos/` 内部的一个文件夹名称。将你想要扫描的仓库复制到 `./repos/` 中,或者直接将其克隆到那里:
```
git clone https://github.com/your-org/your-repo.git ./repos/your-repo
```
**对于 monorepo(单体仓库):**
```
git clone https://github.com/your-org/your-monorepo.git ./repos/your-monorepo
```
**对于多仓库应用程序**(例如,独立的前端/后端):
```
mkdir ./repos/your-app
cd ./repos/your-app
git clone https://github.com/your-org/frontend.git
git clone https://github.com/your-org/backend.git
git clone https://github.com/your-org/api.git
```
### 特定平台说明
**对于 Linux(原生 Docker):**
根据你的 Docker 设置,你可能需要使用 `sudo` 运行命令。如果你遇到输出文件的权限问题,请确保你的用户有权访问 Docker socket。
**对于 macOS:**
安装 Docker Desktop 后即可开箱即用。
**测试本地应用程序:**
Docker 容器无法访问宿主机上的 `localhost`。请使用 `host.docker.internal` 替代 `localhost`:
```
./dapper start URL=http://host.docker.internal:3000 REPO=repo-name
```
### 配置(可选)
虽然你可以在没有配置文件的情况下运行,但创建一个可以实现经过身份验证的测试和自定义分析。请将你的配置文件放在 `./configs/` 目录中——此文件夹会自动挂载到 Docker 容器中。
#### 创建配置文件
复制并修改示例配置:
```
cp configs/example-config.yaml configs/my-app-config.yaml
```
#### 基本配置结构
```
authentication:
login_type: form
login_url: "https://your-app.com/login"
credentials:
username: "test@example.com"
password: "yourpassword"
totp_secret: "LB2E2RX7XFHSTGCK" # Optional for 2FA
login_flow:
- "Type $username into the email field"
- "Type $password into the password field"
- "Click the 'Sign In' button"
success_condition:
type: url_contains
value: "/dashboard"
rules:
avoid:
- description: "AI should avoid testing logout functionality"
type: path
url_path: "/logout"
focus:
- description: "AI should emphasize testing API endpoints"
type: path
url_path: "/api"
```
#### 针对 2FA 的 TOTP 设置
如果你的应用程序使用了双因素身份验证,只需将 TOTP 密钥添加到你的配置文件中即可。AI 将在测试期间自动生成所需的验证码。
### [实验性 - 不支持] Router 模式(替代提供商)
Dapper 可以通过实验性地使用 claude-code-router 将请求路由到替代的 AI 提供商。此模式未经官方支持,主要适用于:
* **模型实验** — 结合 GPT-5.2 或 Gemini 3 系列模型尝试 Dapper
#### 快速设置
1. 将你的提供商 API key 添加到 `.env` 中:
```
# 选择一个 provider:
OPENAI_API_KEY=sk-...
# 或
OPENROUTER_API_KEY=sk-or-...
# 设置默认模型:
ROUTER_DEFAULT=openai,gpt-5.2 # provider,model format
```
2. 使用 `ROUTER=true` 运行:
```
./dapper start URL=https://example.com REPO=repo-name ROUTER=true
```
#### 实验性模型
| 提供商 | 模型 |
|----------|--------|
| OpenAI | gpt-5.2, gpt-5-mini |
| OpenRouter | google/gemini-3-flash-preview |
#### 免责声明
此功能是实验性的且不受支持。输出质量在很大程度上取决于模型。Dapper 构建在 Anthropic Agent SDK 之上,并针对 Anthropic Claude 模型进行了优化和主要测试。替代提供商可能会产生不一致的结果(包括在侦察等早期阶段失败),具体取决于模型和路由设置。
### 输出和结果
所有结果默认保存在 `./audit-logs/{hostname}_{sessionId}/` 中。使用 `--output 你的“随性编码”蓝队的红队。
每个 Claude(编码者)都值得拥有自己的 Dapper。
标签:2FA绕过, AI安全, API安全, Chat Copilot, CISA项目, CTI, DevSecOps, GraphQL安全矩阵, JSON输出, Maven, MITM代理, OWASP Top 10, TOTP破解, 上游代理, 代码生成, 动态应用安全测试(DAST), 反取证, 大模型驱动, 安全扫描器, 安全报告生成, 安全评估, 授权绕过, 服务器端请求伪造(SSRF), 渗透测试工具, 漏洞验证, 白盒测试, 结构化查询, 网络安全, 自动化安全, 自动化渗透测试, 请求拦截, 跨站脚本攻击(XSS), 身份验证绕过, 隐私保护