自主AI渗透测试工具,用于Web应用和API。使用Shannon进行白盒安全评估——分析源代码、识别攻击向量,并执行真实漏洞利用以证明漏洞存在。通过'shannon'、'pentest'、'security audit'、'vuln scan'触发。
Shannon:自主AI Web应用与API渗透测试工具
权限概述: 本技能编排Shannon——一个基于Docker的渗透测试工具,可主动对目标应用执行攻击。它会在本地克隆/更新Shannon仓库,运行Docker容器,并读取渗透测试报告。Shannon执行真实的漏洞利用——仅限对您拥有或获得明确书面授权的应用运行。切勿在生产系统上运行。
Shannon分析您的源代码,识别攻击向量,并执行真实漏洞利用,在漏洞进入生产环境之前证明其存在。在XBOW安全基准测试中,漏洞利用成功率达96.15%。覆盖OWASP Top 10:注入、XSS、SSRF、认证失效、授权失效等。
关键:安全检查(始终优先执行)
在执行任何操作之前,您必须确认:
- 授权:询问用户——“您是否拥有对该目标进行渗透测试的明确授权?”如果用户回答否或不确定,立即停止并解释需要系统所有者的书面许可。
- 环境:确认目标是本地、预发布或沙箱环境——绝不能是生产环境。
- 范围:明确用户想要测试的内容(完整渗透测试或特定类别)。
⚠️ Shannon执行具有变异效应的真实攻击。
├─ 仅限在您拥有或获得书面授权测试的系统上运行
├─ 切勿针对生产环境
├─ 结果需要人工审核——LLM输出可能包含幻觉
└─ 您有责任遵守所有适用法律
在每次渗透测试运行前显示此警告。如果用户已在本次会话中确认授权,简要提醒即可。
解析用户意图
从用户输入中提取:
- TARGET_URL:要渗透测试的URL(例如
http://localhost:3000、http://staging.example.com) - REPO_NAME:源代码文件夹名称(放置在Shannon内的
./repos/中) - SCOPE:完整渗透测试(默认)或特定类别(injection、xss、ssrf、auth、authz)
- WORKSPACE:用于恢复能力的命名工作区(可选)
- CONFIG:自定义YAML配置路径(可选,用于认证流程、关注/避免规则)
常见调用模式:
/shannon http://localhost:3000 myapp→ 对本地应用进行完整渗透测试/shannon --workspace=audit1 http://staging.example.com backend-api→ 命名工作区,支持恢复/shannon --scope=xss,injection http://localhost:8080 frontend→ 针对性类别/shannon status→ 检查正在运行的渗透测试/shannon results→ 显示最新报告/shannon stop→ 停止正在运行的渗透测试
显示解析后的意图:
🔐 Shannon渗透测试
├─ 目标:{TARGET_URL}
├─ 源码:repos/{REPO_NAME}
├─ 范围:{SCOPE 或 "完整(全部5个OWASP类别)"}
├─ 工作区:{WORKSPACE 或 "自动生成"}
└─ 配置:{CONFIG 或 "默认"}
预计运行时间:1–1.5小时 │ 预计费用:~$50(Claude Sonnet)
步骤0:确保Shannon已安装
检查Shannon是否已在本地克隆:
SHANNON_HOME="${SHANNON_HOME:-$HOME/shannon}"
if [ -d "$SHANNON_HOME" ] && [ -f "$SHANNON_HOME/shannon" ]; then
echo "Shannon found at $SHANNON_HOME"
cd "$SHANNON_HOME" && git pull --ff-only 2>/dev/null || true
else
echo "Shannon not found. Cloning..."
git clone https://github.com/KeygraphHQ/shannon.git "$SHANNON_HOME"
fi
# Verify Docker is available
if command -v docker &>/dev/null; then
echo "Docker: $(docker --version)"
else
echo "ERROR: Docker is required. Install Docker Desktop: https://docker.com/products/docker-desktop"
exit 1
fi
如果Shannon未安装,克隆它并通知用户。如果Docker缺失,停止并告知用户安装。
SHANNON_HOME 默认为 ~/shannon。用户可以通过 SHANNON_HOME 环境变量覆盖。
步骤1:准备源代码
Shannon需要目标源代码位于 $SHANNON_HOME/repos/{REPO_NAME}/。
询问用户源代码位置:
# 如果用户提供本地路径
REPO_PATH="/path/to/their/source"
REPO_NAME="myapp"
# 创建符号链接或复制到Shannon的repos目录
mkdir -p "$SHANNON_HOME/repos"
if [ ! -d "$SHANNON_HOME/repos/$REPO_NAME" ]; then
ln -s "$(realpath "$REPO_PATH")" "$SHANNON_HOME/repos/$REPO_NAME"
echo "Linked $REPO_PATH → repos/$REPO_NAME"
fi
如果用户提供GitHub URL:
cd "$SHANNON_HOME/repos"
git clone "$GITHUB_URL" "$REPO_NAME"
步骤2:配置认证(如果需要)
如果目标需要登录,帮助用户创建YAML配置:
# $SHANNON_HOME/configs/target-config.yaml
authentication:
type: form # "form" 或 "sso"
login_url: "http://localhost:3000/login"
credentials:
username: "admin"
password: "password123"
flow: "Navigate to login page, enter username and password, click Sign In"
success_condition:
url_contains: "/dashboard"
rules:
avoid:
- "/logout"
- "/admin/delete"
focus:
- "/api/"
- "/auth/"
pipeline:
max_concurrent_pipelines: 5 # 1-5,默认5
仅在目标需要认证或有特定范围规则时才创建配置。 对于开放/无需认证的目标,无需配置。
步骤3:验证API凭证
检查AI提供商凭证是否可用:
cd "$SHANNON_HOME"
# 检查Anthropic API密钥(主要)
if [ -n "${ANTHROPIC_API_KEY:-}" ]; then
echo "✅ ANTHROPIC_API_KEY is set"
elif [ -n "${CLAUDE_CODE_OAUTH_TOKEN:-}" ]; then
echo "✅ CLAUDE_CODE_OAUTH_TOKEN is set"
elif [ "${CLAUDE_CODE_USE_BEDROCK:-}" = "1" ]; then
echo "✅ AWS Bedrock mode enabled"
elif [ "${CLAUDE_CODE_USE_VERTEX:-}" = "1" ]; then
echo "✅ Google Vertex AI mode enabled"
else
echo "❌ No AI credentials found."
echo "Set one of: ANTHROPIC_API_KEY, CLAUDE_CODE_OAUTH_TOKEN, or enable Bedrock/Vertex"
exit 1
fi
如果未找到凭证,解释选项:
- 直接API(推荐):
export ANTHROPIC_API_KEY=sk-ant-... - OAuth:
export CLAUDE_CODE_OAUTH_TOKEN=... - AWS Bedrock:
export CLAUDE_CODE_USE_BEDROCK=1+ AWS凭证 - Google Vertex:
export CLAUDE_CODE_USE_VERTEX=1+./credentials/中的服务账户
同时建议:export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
步骤4:启动渗透测试
关键:启动前与用户确认。 显示完整命令并等待批准。
cd "$SHANNON_HOME"
# 构建命令
CMD="./shannon start URL={TARGET_URL} REPO={REPO_NAME}"
# 添加可选标志
# CONFIG=configs/target-config.yaml (如果存在认证配置)
# WORKSPACE={WORKSPACE} (如果用户指定)
# OUTPUT=./audit-logs/ (默认)
echo "Ready to launch:"
echo " $CMD"
echo ""
echo "This will start Docker containers and begin the pentest."
echo "Runtime: ~1-1.5 hours │ Cost: ~\$50 (Claude Sonnet)"
用户确认后,在后台运行:
cd "$SHANNON_HOME" && ./shannon start URL={TARGET_URL} REPO={REPO_NAME} {EXTRA_FLAGS}
使用 run_in_background: true,超时时间600000ms(初始设置10分钟)。渗透测试本身在Docker中运行,将独立继续。
步骤5:监控进度
渗透测试运行时,用户可以检查状态:
cd "$SHANNON_HOME"
# 列出活动工作区
./shannon workspaces
# 查看特定工作流的日志
./shannon logs ID={workflow-id}
解释5阶段流水线:
Shannon流水线(5个阶段,尽可能并行):
├─ 阶段1:预侦察——源代码分析 + 外部扫描(Nmap、Subfinder、WhatWeb)
├─ 阶段2:侦察——通过浏览器自动化进行实时攻击面映射
├─ 阶段3:漏洞分析——5个并行代理(注入、XSS、SSRF、认证、授权)
├─ 阶段4:漏洞利用——专用代理执行真实攻击以验证发现
└─ 阶段5:报告——包含可复现PoC的执行摘要
步骤6:读取和解释结果
报告保存到 $SHANNON_HOME/audit-logs/{hostname}_{sessionId}/。
cd "$SHANNON_HOME"
# 查找最新报告
LATEST=$(ls -td audit-logs/*/ 2>/dev/null | head -1)
if [ -n "$LATEST" ]; then
echo "Latest report: $LATEST"
# 查找主报告文件
find "$LATEST" -name "*.md" -type f | head -5
fi
读取报告并呈现摘要:
🔐 Shannon渗透测试报告:{TARGET}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🔴 严重:{N} 个漏洞
🟠 高危:{N} 个漏洞
🟡 中危:{N} 个漏洞
🔵 低危:{N} 个漏洞
主要发现:
1. [严重] {漏洞类型} — {位置} — PoC:{简要描述}
2. [高危] {漏洞类型} — {位置} — PoC:{简要描述}
3. ...
每个发现都包含可复现的漏洞利用证明。
重要:Shannon的“无漏洞利用,无报告”政策意味着每个发现都有可工作的PoC。 但提醒用户LLM生成的内容需要人工审核。
实用命令
检查状态
cd "$SHANNON_HOME" && ./shannon workspaces
查看日志
cd "$SHANNON_HOME" && ./shannon logs ID={workflow-id}
停止渗透测试
cd "$SHANNON_HOME" && ./shannon stop
停止并清理所有数据
# 破坏性操作——先与用户确认
cd "$SHANNON_HOME" && ./shannon stop CLEAN=true
恢复之前的工作区
cd "$SHANNON_HOME" && ./shannon start URL={URL} REPO={REPO} WORKSPACE={name}
针对本地应用
如果用户的应用程序在localhost上运行,解释:
Shannon在Docker内部运行。要访问您的本地应用:
├─ 使用 http://host.docker.internal:{PORT} 而不是 http://localhost:{PORT}
├─ macOS/Windows:Docker Desktop自动支持
└─ Linux:在docker run中添加 --add-host=host.docker.internal:host-gateway
在命令中自动将 localhost URL转换为 host.docker.internal。
配置参考
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
ANTHROPIC_API_KEY |
其中之一 | 直接Anthropic API密钥 |
CLAUDE_CODE_OAUTH_TOKEN |
必需 | Anthropic OAuth令牌 |
CLAUDE_CODE_USE_BEDROCK |
设置为 1 以使用AWS Bedrock |
|
CLAUDE_CODE_USE_VERTEX |
设置为 1 以使用Google Vertex AI |
|
CLAUDE_CODE_MAX_OUTPUT_TOKENS |
推荐 | 设置为 64000 |
SHANNON_HOME |
可选 | Shannon安装目录(默认:~/shannon) |
YAML配置选项
| 部分 | 字段 | 描述 |
|---|---|---|
authentication.type |
form / sso |
登录方式 |
authentication.login_url |
URL | 登录页面 |
authentication.credentials |
对象 | username、password、totp_secret |
authentication.flow |
字符串 | 自然语言登录说明 |
authentication.success_condition |
对象 | url_contains 或 element_present |
rules.avoid |
列表 | 要跳过的路径/子域名 |
rules.focus |
列表 | 要优先处理的路径/子域名 |
pipeline.retry_preset |
subscription |
针对速率限制计划的扩展退避 |
pipeline.max_concurrent_pipelines |
1-5 | 并行代理数量(默认:5) |
漏洞覆盖范围
Shannon测试5个OWASP类别中的50多个具体案例:
| 类别 | 示例 |
|---|---|
| 注入 | SQL注入、命令注入、SSTI、NoSQL注入 |
| XSS | 反射型、存储型、DOM型、通过文件上传 |
| SSRF | 内部服务访问、云元数据、协议走私 |
| 认证失效 | 默认凭证、JWT缺陷、会话固定、MFA绕过、CSRF |
| 授权失效 | IDOR、权限提升、路径遍历、强制浏览 |
集成安全工具(捆绑在Docker中)
- Nmap — 端口扫描和服务检测
- Subfinder — 子域名枚举
- WhatWeb — Web技术指纹识别
- Schemathesis — 基于API模式的模糊测试
- Chromium — 用于自动化漏洞利用的无头浏览器(Playwright)
上下文记忆
在本次对话的剩余部分,记住:
- SHANNON_HOME:Shannon安装路径
- TARGET_URL:正在测试的URL
- REPO_NAME:源代码文件夹名称
- WORKSPACE:工作区名称(如果有)
- PENTEST_STATUS:运行中 / 已完成 / 已停止
当用户提出后续问题时:
- 检查渗透测试状态并报告进度
- 从audit-logs读取并解释新发现
- 通过代码修复帮助修复发现的漏洞
- 解释PoC漏洞利用及其影响
安全与权限
本技能的功能:
- 从GitHub克隆/更新Shannon仓库到
~/shannon(或$SHANNON_HOME) - 从用户源代码创建符号链接到
~/shannon/repos/ - 通过
./shannonCLI启动Docker容器(Temporal服务器、worker、可选路由器) - 从
~/shannon/audit-logs/读取渗透测试报告 - 可选地在
~/shannon/configs/中创建YAML配置文件
Shannon的功能(在Docker内部):
- 对目标URL执行真实漏洞利用(SQL注入、XSS、SSRF等)
- 使用Nmap、Subfinder、WhatWeb、Schemathesis进行扫描
- 通过无头Chromium自动化浏览器交互
- 向Anthropic API(或Bedrock/Vertex)发送提示以进行推理
- 将报告写入
audit-logs/目录
本技能不执行的操作:
- 未经用户确认不会针对任何系统
- 不会存储或传输超出已配置提供商的API密钥
- 不会修改用户的源代码
- 除非明确指示(并警告),否则不会访问生产系统
- 没有Docker无法运行——所有攻击工具都已容器化
首次使用前请查看Shannon源代码: https://github.com/KeygraphHQ/shannon






