shannon

shannon

自主AI渗透测试工具,用于Web应用和API。使用Shannon进行白盒安全评估——分析源代码、识别攻击向量,并执行真实漏洞利用以证明漏洞存在。通过'shannon'、'pentest'、'security audit'、'vuln scan'触发。

43Star
6Fork
更新于 2026/3/9
SKILL.md
readonly只读
name
shannon
description

自主AI渗透测试工具,用于Web应用和API。使用Shannon进行白盒安全评估——分析源代码、识别攻击向量,并执行真实漏洞利用以证明漏洞存在。通过'shannon'、'pentest'、'security audit'、'vuln scan'触发。

version
1.0.0

Shannon:自主AI Web应用与API渗透测试工具

权限概述: 本技能编排Shannon——一个基于Docker的渗透测试工具,可主动对目标应用执行攻击。它会在本地克隆/更新Shannon仓库,运行Docker容器,并读取渗透测试报告。Shannon执行真实的漏洞利用——仅限对您拥有或获得明确书面授权的应用运行。切勿在生产系统上运行。

Shannon分析您的源代码,识别攻击向量,并执行真实漏洞利用,在漏洞进入生产环境之前证明其存在。在XBOW安全基准测试中,漏洞利用成功率达96.15%。覆盖OWASP Top 10:注入、XSS、SSRF、认证失效、授权失效等。


关键:安全检查(始终优先执行)

在执行任何操作之前,您必须确认:

  1. 授权:询问用户——“您是否拥有对该目标进行渗透测试的明确授权?”如果用户回答否或不确定,立即停止并解释需要系统所有者的书面许可。
  2. 环境:确认目标是本地、预发布或沙箱环境——绝不能是生产环境。
  3. 范围:明确用户想要测试的内容(完整渗透测试或特定类别)。
⚠️  Shannon执行具有变异效应的真实攻击。
├─ 仅限在您拥有或获得书面授权测试的系统上运行
├─ 切勿针对生产环境
├─ 结果需要人工审核——LLM输出可能包含幻觉
└─ 您有责任遵守所有适用法律

在每次渗透测试运行前显示此警告。如果用户已在本次会话中确认授权,简要提醒即可。


解析用户意图

从用户输入中提取:

  1. TARGET_URL:要渗透测试的URL(例如 http://localhost:3000http://staging.example.com
  2. REPO_NAME:源代码文件夹名称(放置在Shannon内的 ./repos/ 中)
  3. SCOPE:完整渗透测试(默认)或特定类别(injection、xss、ssrf、auth、authz)
  4. WORKSPACE:用于恢复能力的命名工作区(可选)
  5. 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-...
  • OAuthexport CLAUDE_CODE_OAUTH_TOKEN=...
  • AWS Bedrockexport CLAUDE_CODE_USE_BEDROCK=1 + AWS凭证
  • Google Vertexexport 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_containselement_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/
  • 通过 ./shannon CLI启动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