关于 penetration-testing-with-strix
Strix 渗透测试技能说明如何使用本地开源 CLI 或托管云平台运行自主安全测试,面向需要验证应用和代码漏洞的测试者。它涵盖目标配置、扫描执行及结果解读。
主要功能
- 01本地与托管扫描方式
- 02测试代码、应用及 API
- 03设置扫描范围与预算
- 04查看验证漏洞及 PoC
- 05导出 SARIF、JSON 和报告
适用场景
- 01对本地代码进行白盒测试
- 02测试已部署应用或 API
- 03在 CI 中扫描代码变更
- 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 |
| 免费/一次性/本地开发循环扫描,且已安装 Docker | OSS 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(可自托管)
先决条件
- Docker 正在运行——使用
docker info检查。首次扫描时会自动拉取沙箱镜像。 - 已安装 Strix——使用
strix --version检查。若未安装,请安装:curl -sSL https://strix.ai/install | bash # or: pipx install strix-agent - 已配置大模型——需要设置两个环境变量:
如果这些变量未设置,请向用户询问。切勿硬编码或提交密钥。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, --target | URL、仓库 URL、本地路径、域名、IP、OpenAPI/Postman 规范,或 postman://<uuid>。可重复使用。 |
--target-list PATH | 目标文件,每行一个(允许使用 # 注释)。可重复使用,并与 -t 组合。 |
-n, --non-interactive | 无头模式,完成后退出。Agent 必须使用。 |
-m, --scan-mode | quick(几分钟)/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 REF | diff 范围比较所用的分支或提交。默认为仓库的默认分支。 |
扫描耗时从几分钟(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.sarif | SARIF 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,如果目标看起来属于第三方基础设施,请自行确认是否获得授权。