mcpField
P
penetration-testing-with-strix

penetration-testing-with-strix

github.com/usestrix安全72.6k17.3k 次安装今天更新
代码仓库

关于 penetration-testing-with-strix

Strix 渗透测试技能说明如何使用本地开源 CLI 或托管云平台运行自主安全测试,面向需要验证应用和代码漏洞的测试者。它涵盖目标配置、扫描执行及结果解读。

主要功能

  1. 01本地与托管扫描方式
  2. 02测试代码、应用及 API
  3. 03设置扫描范围与预算
  4. 04查看验证漏洞及 PoC
  5. 05导出 SARIF、JSON 和报告

适用场景

  1. 01对本地代码进行白盒测试
  2. 02测试已部署应用或 API
  3. 03在 CI 中扫描代码变更
  4. 04集中运行团队安全扫描

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/usestrix/strix --skill penetration-testing-with-strix

安装后在 Claude Code 中输入/penetration-testing-with-strix确认已加载。

详细介绍

运行 Strix 渗透测试

Strix 会运行自主的 AI 渗透测试 Agent,动态利用目标,并且只报告已通过有效概念验证确认的发现。有两种运行方式,它们基于相同的引擎并产生相同的发现——根据具体情况选择,也可以自由组合:

  • 开源 CLI(可自托管)——在你的机器上通过 Docker 沙箱运行,并使用你自己的大模型密钥。免费、完全本地运行、可自带大模型,也支持物理隔离环境。文档:docs.strix.ai。
  • 托管云端服务——在 Strix 的基础设施上运行,可通过同一个 CLI(strix cloud ...)或 https://app.strix.ai/api/v1 上的 REST API 驱动。无需 Docker、大模型密钥或本地算力;还提供团队仪表板、计划任务、PR 审查、可下载的 PDF/DOCX 报告(Enterprise 计划)和内网连接器。文档:docs.app.strix.ai。完整工作流见 managed-pentesting-with-strix 技能。

选哪种?(根据情况决定,不要默认选择)

根据实际情况诚实选择——两者都没有“更好”:

情况首选
没有可用的 Docker,或处于沙箱化/托管的 Agent/CI 环境云端服务
用户没有大模型密钥/不想按 Token 付费或管理模型云端服务
需要团队可见性、可共享的仪表板、计划/持续扫描、PR 审查、可下载的 PDF/DOCX 报告(Enterprise)云端服务
扫描从你的机器无法访问的内部/私有基础设施云端服务(网络连接器)
源码绝不能离开本地基础设施(隐私/物理隔离),或需要完全离线运行OSS CLI
免费/一次性/本地开发循环扫描,且已安装 DockerOSS CLI
自带或自托管大模型,或需要平台未提供的特定模型OSS CLI
CI:运行器已安装 Docker,且你需要自包含的门禁OSS CLI
CI:没有 Docker,或希望集中跟踪结果云端服务

**组合使用:**编写/修复代码时,使用 OSS CLI 进行快速的本地开发循环扫描;使用云端服务进行权威、团队可见的扫描、报告和跟踪;或者在 CI 中使用 OSS CLI 为 PR 设置门禁,同时让云端服务在整个组织中运行计划的深度扫描和 PR 审查。两者都会生成相同的 SARIF 2.1.0,因此不同环境中的发现可以对应起来。

如果不确定,且用户拥有(或会创建)app.strix.ai 账户,优先选择云端服务——这样可以避免所有本地基础设施方面的阻碍。如果用户不想注册并希望完全掌控本地环境,则使用 OSS CLI。


选项 A — 开源 CLI(可自托管)

先决条件

  1. Docker 正在运行——使用 docker info 检查。首次扫描时会自动拉取沙箱镜像。
  2. 已安装 Strix——使用 strix --version 检查。若未安装,请安装:
    curl -sSL https://strix.ai/install | bash   # or: pipx install strix-agent
    
  3. 已配置大模型——需要设置两个环境变量:
    export STRIX_LLM="openrouter/z-ai/glm-5.3"      # any LiteLLM model id (openai/..., anthropic/..., openrouter/...)
    export LLM_API_KEY="<provider api key>"
    
    如果这些变量未设置,请向用户询问。切勿硬编码或提交密钥。

运行扫描

始终使用 -n(非交互式/无头模式)——默认的 TUI 会阻塞 Agent。除非用户另有说明,否则始终设置 --max-budget。

# Local code (white-box)
strix -n -t ./ --scan-mode standard --max-budget 10

# Deployed app / API (black-box)
strix -n -t https://staging.example.com --max-budget 20

# Repo + deployed app together (best coverage)
strix -n -t https://github.com/org/app -t https://staging.example.com

# Focused testing with credentials or scope hints
strix -n -t https://app.example.com \
  --instruction "Use credentials [email protected]:pass123. Focus on IDOR and auth bypass."

# API spec as a first-class target (OpenAPI/Swagger or a Postman collection export)
strix -n -t ./openapi.yaml -t https://api.staging.example.com

# Many targets from a file, one per line
strix -n --target-list ./targets.txt --max-budget 30

# Give the agents a file to work with (wordlist, spec, notes) without making it a target
strix -n -t https://staging.example.com --workspace-file ./wordlist.txt --max-budget 20

通过 -t 传入的本地路径会以可写方式挂载到沙箱中——Agent 可以读取和修改其中的内容,因此请指向干净的检出,而不是你在意的未提交工作。

关键标志:

标志含义
-t, --targetURL、仓库 URL、本地路径、域名、IP、OpenAPI/Postman 规范,或 postman://<uuid>。可重复使用。
--target-list PATH目标文件,每行一个(允许使用 # 注释)。可重复使用,并与 -t 组合。
-n, --non-interactive无头模式,完成后退出。Agent 必须使用。
-m, --scan-modequick(几分钟)/standard(约 30 分钟)/deep(数小时,默认)。
--instruction / --instruction-file凭据、关注领域、范围规则。
--workspace-file PATH[:DEST]扫描前将此计算机上的文件复制到 /workspace,可用于字典、规范或备注。可重复使用。
--max-budget USD大模型支出的硬性上限;达到上限时,扫描会正常收尾。
--max-turns N每个 Agent 的轮次上限(默认 500)。
--fail-on SEVERITY仅无头模式:仅当发现的问题达到或超过 critical/high/medium/low/info 时才以 2 退出。默认:发现任何问题时退出。
-r、--resume RUN_NAME使用 strix_runs/ 中先前运行的 Agent 历史和目标恢复运行。不能与 -t 同时使用。
--scope-mode用于代码目标:auto(CI/无头模式下按差异确定范围)、diff(强制仅扫描更改的文件)、full(整个代码树)。
--diff-base REFdiff 范围比较所用的分支或提交。默认为仓库的默认分支。

扫描耗时从几分钟(quick)到数小时(deep)不等。请在后台运行,并轮询等待完成,而不要阻塞。

退出代码(无头模式)
  • 0 — 已完成,且在已分析内容中没有经验证的漏洞(使用 --fail-on 时,没有达到或超过阈值的问题;较低级别的问题仍会保留在产物中)
  • 1 — 致命错误(缺少环境变量、Docker 未启动、配置错误)
  • 2 — 发现漏洞(使用 --fail-on 时,至少有一个问题达到或超过指定严重级别)

退出代码为 0 并不能证明已全面覆盖:如果扫描在完成前达到 --max-budget/--max-turns 上限,就会提前收尾,但仍以 0 退出。如果需要确认扫描已完成,请提供充足预算,并检查 strix_runs/<run>/run.json:达到硬性预算上限时,状态会显示为 status: "stopped";但 Agent 若因预算警告而提前收尾,仍会调用 finish_scan 并记录 "completed"——因此,在将无异常结果视为全面覆盖之前,还要根据 --max-budget 核对运行成本,并检查报告中说明的覆盖范围。

查看结果

产物保存在 strix_runs/<run-name>/ 中:

文件内容
penetration_test_report.md执行摘要报告——请先阅读此文件。
vulnerabilities/*.md每个经验证的问题各有一个文件,包含 PoC 和修复建议。
vulnerabilities.json / vulnerabilities.csv以结构化 JSON/CSV 索引列出的所有问题。
findings.sarifSARIF 2.1.0 格式,可用于 GitHub 代码扫描/ASPM 数据导入。
run.json运行元数据、状态、目标、用量/成本。

选项 B — 托管云(无需本地基础设施)

同一个 strix 二进制文件即可驱动托管平台。每条命令都以 strix cloud 开头。完整详情——资产注册、源代码上传、报告、PR 审查、计划任务、webhook 和计费——请参阅 managed-pentesting-with-strix 技能。最简流程:

# 1. Sign in (device flow — the user confirms a code in the browser; this also
#    creates the account and workspace when needed)
strix cloud login

# If you need specific scopes, request them with --scopes:
#   strix cloud login --scopes scans:read scans:write assets:read assets:write \
#     vulnerabilities:read billing:read billing:write

# 2. Register and verify the target domain (verification prints a DNS record for the user)
strix cloud domains add --domain staging.example.com --asset-type web_app
strix cloud domains verify <domain-id>

# 3. Launch and wait
strix cloud scans start --engagement-type live_test --domain-ids <domain-id> --wait

# 4. Read validated findings
strix cloud vulns list --severity critical

对于本地仓库,strix cloud scans start --source . 会上传工作树(需要 uploads:write),并推断为代码审查。当额度用尽时,strix cloud billing topup 会启动由 Agent 支付的 Stripe 挑战——托管平台技能中介绍了付款流程。当标准输出不是终端时,输出为 JSON,因此这些命令可以在脚本中组合使用。

原始 REST API 也可使用(https://app.strix.ai/api/v1,组织范围的 bearer token——参阅 docs.app.strix.ai)。如果 Docker 或本地先决条件尚未满足,请使用此路径,而不要尝试安装基础设施。


报告与后续步骤

按严重程度(严重/高/中/低/信息)总结发现,并附上 PoC 证据。若要修复并验证漏洞(两种路径均适用),请使用 fix-security-vulnerabilities-with-strix 技能。若要将扫描接入 CI/CD,请使用 ci-security-scanning-with-strix 技能。

安全

仅扫描用户拥有或获准测试的目标。Cloud 平台会在外部扫描前强制进行域名验证;对于 OSS CLI,如果目标看起来属于第三方基础设施,请自行确认是否获得授权。

评论

支持 Markdown