🚀 快速安装

复制以下命令并运行,立即安装此 Skill:

npx skills add https://skills.sh/aradotso/trending-skills/shannon-ai-pentester

💡 提示:需要 Node.js 和 NPM

Shannon AI 渗透测试工具

技能由 ara.so 提供 — Daily 2026 Skills 系列。

Shannon 是一个用于 Web 应用和 API 的自主式白盒 AI 渗透测试工具。它通过读取您的源代码来识别攻击向量,然后针对正在运行的应用程序执行实际漏洞利用(SQLi、XSS、SSRF、认证绕过、授权缺陷)—— 仅报告带有可工作概念验证的漏洞。

工作原理

  1. 侦察 — Nmap、Subfinder、WhatWeb 和 Schemathesis 扫描目标
  2. 代码分析 — Shannon 读取您的代码仓库以映射攻击面
  3. 并行利用 — 并发代理尝试跨所有漏洞类别的实时漏洞利用
  4. 报告生成 — 仅包含已确认、可复现的发现以及可直接复制粘贴的概念验证

安装与前提条件

  • Docker(必需 — Shannon 完全在容器中运行)
  • Anthropic API 密钥、Claude Code OAuth 令牌、AWS Bedrock 凭证或 Google Vertex AI 凭证
git clone https://github.com/KeygraphHQ/shannon.git
cd shannon

快速开始

# 选项 A: 导出凭证
export ANTHROPIC_API_KEY="sk-ant-..."
export CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000

# 选项 B: .env 文件
cat > .env << 'EOF'
ANTHROPIC_API_KEY=sk-ant-...
CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000
EOF

# 运行渗透测试
./shannon start URL=https://your-app.example.com REPO=/path/to/your/repo

Shannon 构建容器,在后台启动工作流,并返回一个工作流 ID。

主要 CLI 命令

# 开始渗透测试
./shannon start URL=https://target.example.com REPO=/path/to/repo

# 使用明确的工作空间名称启动(用于恢复)
./shannon start URL=https://target.example.com REPO=/path/to/repo WORKSPACE=my-audit-2024

# 监控实时进度(跟踪日志)
./shannon logs <workflow-id>

# 检查运行中渗透测试的状态
./shannon status <workflow-id>

# 恢复中断的渗透测试
./shannon resume WORKSPACE=my-audit-2024

# 停止正在运行的渗透测试
./shannon stop <workflow-id>

# 查看最终报告
./shannon report <workflow-id>

配置

环境变量

# 必需(选择一种认证方式)
ANTHROPIC_API_KEY=sk-ant-...           # Anthropic 直连
CLAUDE_CODE_OAUTH_TOKEN=...            # Claude Code OAuth

# 推荐
CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000   # 为大报告增加输出窗口大小

# AWS Bedrock(替代 Anthropic 直连)
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_DEFAULT_REGION=us-east-1
SHANNON_AI_PROVIDER=bedrock
SHANNON_BEDROCK_MODEL=anthropic.claude-3-7-sonnet-20250219-v1:0

# Google Vertex AI(替代 Anthropic 直连)
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
SHANNON_AI_PROVIDER=vertex
SHANNON_VERTEX_PROJECT=your-gcp-project
SHANNON_VERTEX_REGION=us-east5

.env 文件示例

# .env(放置在 shannon 项目根目录下)
ANTHROPIC_API_KEY=sk-ant-...
CLAUDE_CODE_MAX_OUTPUT_TOKENS=64000

# 可选:用于认证测试的目标凭证
TARGET_USERNAME=admin@example.com
TARGET_PASSWORD=supersecret
TARGET_TOTP_SECRET=BASE32TOTPSECRET   # Shannon 自动处理双因素认证

使用示例

基础 Web 应用渗透测试

# 将 Shannon 指向一个正在运行的本地应用及其源代码
./shannon start \
  URL=http://localhost:3000 \
  REPO=$(pwd)/../my-express-app

针对 OWASP Juice Shop 的测试(演示)

# 拉取并运行 Juice Shop
docker run -d -p 3000:3000 bkimminich/juice-shop

# 对其实施 Shannon 测试
./shannon start \
  URL=http://localhost:3000 \
  REPO=/path/to/juice-shop

带双因素认证的认证测试

export TARGET_USERNAME="admin@yourapp.com"
export TARGET_PASSWORD="$ADMIN_PASSWORD"
export TARGET_TOTP_SECRET="$TOTP_BASE32_SECRET"

./shannon start URL=https://staging.yourapp.com REPO=/path/to/repo

AWS Bedrock 提供商

export AWS_ACCESS_KEY_ID="$AWS_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="$AWS_SECRET_ACCESS_KEY"
export AWS_DEFAULT_REGION=us-east-1
export SHANNON_AI_PROVIDER=bedrock
export SHANNON_BEDROCK_MODEL=anthropic.claude-3-7-sonnet-20250219-v1:0

./shannon start URL=https://target.example.com REPO=/path/to/repo

Google Vertex AI 提供商

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
export SHANNON_AI_PROVIDER=vertex
export SHANNON_VERTEX_PROJECT=my-gcp-project
export SHANNON_VERTEX_REGION=us-east5

./shannon start URL=https://target.example.com REPO=/path/to/repo

工作空间与恢复模式

工作空间允许您暂停并恢复长时间运行的渗透测试:

# 使用命名的工作空间启动
./shannon start \
  URL=https://target.example.com \
  REPO=/path/to/repo \
  WORKSPACE=sprint-42-audit

# 稍后,从中断处恢复
./shannon resume WORKSPACE=sprint-42-audit

# 工作空间会持久化结果,因此您可以重新运行报告
./shannon report WORKSPACE=sprint-42-audit

输出与报告

报告写入工作空间目录(默认:./workspaces/<workflow-id>/):

workspaces/
└── my-audit-2024/
    ├── report.md          # 包含概念验证漏洞利用的最终渗透测试报告
    ├── findings.json      # 机器可读的发现结果
    └── logs/              # 每个代理的执行日志

报告内容包括:

  • 漏洞标题和 CVSS 风格严重性评分
  • 受影响的端点和参数
  • 带有源代码引用的根本原因分析
  • 逐步复现说明
  • 可直接复制粘贴的 curl/HTTP 概念验证

漏洞覆盖范围

Shannon 当前测试以下漏洞类型:

类别 示例
注入 (Injection) SQL 注入、命令注入、LDAP 注入
XSS 反射型、存储型、DOM 型
SSRF 内部网络访问、云元数据端点
认证缺陷 (Broken Authentication) 弱令牌、会话固定、认证绕过
授权缺陷 (Broken Authorization) IDOR、权限提升、缺失访问控制

CI/CD 集成模式

# .github/workflows/pentest.yml
name: Shannon Pentest
on:
  push:
    branches: [staging]

jobs:
  pentest:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          path: app

      - name: Clone Shannon
        run: git clone https://github.com/KeygraphHQ/shannon.git

      - name: Start Application
        run: |
          cd app
          docker compose up -d
          # 等待应用健康启动
          sleep 30

      - name: Run Shannon
        working-directory: shannon
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
          CLAUDE_CODE_MAX_OUTPUT_TOKENS: 64000
        run: |
          ./shannon start \
            URL=http://localhost:3000 \
            REPO=${{ github.workspace }}/app \
            WORKSPACE=ci-${{ github.sha }}
          # 等待完成并获取报告
          ./shannon wait ci-${{ github.sha }}
          ./shannon report ci-${{ github.sha }} > pentest-report.md

      - name: Upload Report
        uses: actions/upload-artifact@v4
        with:
          name: pentest-report
          path: shannon/pentest-report.md

故障排除

未找到 Docker 或权限被拒绝

# 确保 Docker 守护进程正在运行
docker info

# 将您的用户添加到 docker 组(Linux)
sudo usermod -aG docker $USER
newgrp docker

Shannon 容器构建失败

# 强制清理重建
docker compose -f shannon/docker-compose.yml build --no-cache

渗透测试卡住/无进展

# 检查阻塞代理的实时日志
./shannon logs <workflow-id>

# 常见原因:
# - 从 Shannon 容器内部无法访问目标应用
# - ANTHROPIC_API_KEY 缺失或达到速率限制
# - 未设置 CLAUDE_CODE_MAX_OUTPUT_TOKENS(模型达到默认限制)

从 Shannon 容器无法访问目标应用

# 使用 host.docker.internal 代替 localhost
./shannon start \
  URL=http://host.docker.internal:3000 \
  REPO=/path/to/repo

# 或者将两者放在同一个 Docker 网络中
docker network create pentest-net
docker run --network pentest-net ...   # 您的应用
# 然后在 .env 中设置 SHANNON_DOCKER_NETWORK=pentest-net

来自 Anthropic 的速率限制错误

# 使用 AWS Bedrock 或 Vertex AI 以避免共享速率限制
export SHANNON_AI_PROVIDER=bedrock
export AWS_DEFAULT_REGION=us-east-1

崩溃后恢复

# 启动时始终使用 WORKSPACE= 来启用可恢复性
./shannon start URL=... REPO=... WORKSPACE=named-session

# 恢复
./shannon resume WORKSPACE=named-session

重要免责声明

  • 仅测试您拥有或已获得明确书面许可的应用。
  • Shannon Lite 采用 AGPL-3.0 许可 —— 任何修改都必须在相同许可下开源。
  • Shannon 是一个 白盒工具:它需要访问您应用的源代码。
  • 它不是黑盒扫描器。在未经授权的情况下对第三方目标运行它是违法的。

关键链接

📄 原始文档

完整文档(英文):

https://skills.sh/aradotso/trending-skills/shannon-ai-pentester

💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。