渗透测试验证
<default_to_action>
验证安全问题时:
- 要求获得目标 URL 的明确授权
- 使用 qe-security-scanner 扫描(SAST + 依赖项 + 密钥)
- 使用 qe-security-reviewer + qe-security-auditor 分析(并行)
- 使用 qe-pentest-validator 验证(分级利用,按漏洞类型并行)
- 仅报告已确认的问题,并提供 PoC 证据(“无利用,不报告”)
- 使用新模式更新利用手册
质量门禁:
- 任何利用操作之前都必须确认已获得授权
- 目标 URL 必须是 staging/dev(不能是 production)
- 强制执行预算上限(默认 $15)
- 强制执行时间上限(默认 30 分钟)
- 记录所有利用尝试
</default_to_action>
快速参考卡
4 阶段流水线
| 阶段 | Agent(s) | 用途 | 并行方式 |
|---|
| 1. 侦察 | qe-security-scanner | SAST、DAST、依赖项扫描、密钥 | 内部并行 |
| 2. 分析 | qe-security-reviewer + qe-security-auditor | 代码审查 + 合规性检查 | 两者并行 |
| 3. 验证 | qe-pentest-validator | 分级利用验证 | 按漏洞类型并行 |
| 4. 报告 | qe-quality-gate | “无利用,不报告”筛选 | 顺序执行 |
分级利用层级
| 层级 | 处理器 | 成本 | 延迟 | 适用场景 |
|---|
| 1 | Agent Booster (WASM) | $0 | <1ms | 代码模式已能得出明确结论(eval、innerHTML、硬编码凭据) |
| 2 | Haiku | $0.0002 | ~500ms | 需要针对在线目标测试载荷 |
| 3 | Sonnet/Opus | $0.003-$0.015 | 2-5s | 通过数据证明完成完整利用链 |
何时使用此技能
| 场景 | 层级 | 预计成本 |
|---|
| PR 安全审查(仅源代码) | 1 | $0 |
| 发布前验证(staging) | 1-2 | $1-5 |
| 完整渗透测试验证 | 1-3 | $5-15 |
| 合规审计证据 | 1-3 | $5-15 |
配置
pentest:
target_url: https://staging.app.com # REQUIRED for Tier 2-3
source_repo: ./src # REQUIRED for Tier 1+
exploitation_tier: 2 # 1=pattern-only, 2=payload-test, 3=full-exploit
vuln_types: # Which pipelines to run
- injection # SQL, NoSQL, command injection
- xss # Reflected, stored, DOM XSS
- auth # Auth bypass, session, JWT
- ssrf # URL scheme abuse, metadata
max_cost_usd: 15 # Budget cap per run
timeout_minutes: 30 # Time cap per run
require_authorization: true # MUST confirm target ownership
no_production: true # Block production URLs
production_patterns: # URL patterns to block
- "*.prod.*"
- "api.*"
- "www.*"
安全防护(强制)
授权门禁
每次渗透测试验证运行都必须:
- 向用户显示目标 URL 和利用层级
- 要求明确确认:“我拥有此目标,或已获准对此目标进行测试”
- 记录授权及时间戳
- 如果目标 URL 符合 production 模式,则阻止操作
此技能不会执行的操作
- 完全自主侦察(Nmap、Subfinder)
- 开发零日漏洞利用
- 未经明确授权攻击目标
- 测试 production 系统
- 存储实际外传的数据(仅保留访问权限证明)
- 社会工程或钓鱼模拟
- 端口扫描或服务发现
验证流水线
注入流水线
| 攻击 | 层级 1(模式) | 层级 2(载荷) | 层级 3(完整) |
|---|
| SQL 注入 | 查询中的字符串拼接 | ' OR '1'='1 响应差异 | UNION SELECT 数据提取 |
| NoSQL 注入 | 查询中的 $where、$gt | 运算符注入测试 | 集合枚举 |
| 命令注入 | exec()、system() 调用 | 命令分隔符测试 | 反向 shell 证明 |
| LDAP 注入 | 筛选条件中的字符串拼接 | 通配符注入 | 目录枚举 |
XSS 流水线
| 攻击 | 层级 1(模式) | 层级 2(载荷) | 层级 3(完整) |
|---|
| 反射型 XSS | 未进行输出编码 | <img onerror> 反射 | 通过 Playwright 执行浏览器 JS |
| 存储型 XSS | innerHTML 赋值 | 存储并检索载荷 | Cookie 窃取 PoC |
| DOM XSS | document.write(location) | 片段注入 | DOM 操作证明 |
认证流水线
| 攻击 | Tier 1(模式) | Tier 2(载荷) | Tier 3(完整) |
|---|
| JWT none | 未验证算法 | 接受篡改后的 JWT | 使用伪造令牌获取管理员访问权限 |
| 会话固定 | 未轮换会话 | 重用预设会话 | 劫持其他用户的会话 |
| 凭据填充 | 未限制请求速率 | 100 次尝试均未被拦截 | 发现有效凭据 |
| IDOR | 未检查授权 | 访问其他用户的数据 | 对他人资源执行完整 CRUD 操作 |
SSRF 流水线
| 攻击 | Tier 1(模式) | Tier 2(载荷) | Tier 3(完整) |
|---|
| 内部 URL | 获取用户可控的 URL | http://169.254.169.254 | 提取云元数据 |
| DNS 重绑定 | 绕过 URL 验证 | 重绑定到内部 IP | 访问内部服务 |
| 协议混淆 | 未限制 URL 方案 | file:///etc/passwd | 在响应中返回文件内容 |
Agent 协作
编排模式
// Phase 1: Recon (parallel scans)
await Task("Security Scan", {
target: "./src",
layers: { sast: true, dast: true, dependencies: true, secrets: true }
}, "qe-security-scanner");
// Phase 2: Analysis (parallel review)
await Promise.all([
Task("Code Security Review", {
findings: phase1Results,
depth: "comprehensive"
}, "qe-security-reviewer"),
Task("Compliance Audit", {
findings: phase1Results,
frameworks: ["owasp-top-10"]
}, "qe-security-auditor")
]);
// Phase 3: Validation (graduated exploitation)
await Task("Exploit Validation", {
findings: [...phase1Results, ...phase2Results],
target_url: "https://staging.app.com",
exploitation_tier: 2,
vuln_types: ["injection", "xss", "auth", "ssrf"],
max_cost_usd: 15,
timeout_minutes: 30
}, "qe-pentest-validator");
// Phase 4: Report ("No Exploit, No Report" gate)
await Task("Security Quality Gate", {
findings: phase3Results.confirmedFindings,
gate: "no-exploit-no-report",
require_poc: true
}, "qe-quality-gate");
发现分类
| 状态 | 含义 | 操作 |
|---|
confirmed-exploitable | 利用 PoC 成功 | 附带证据报告 |
likely-exploitable | 部分利用成功,检测到防御机制 | 附带注意事项报告 |
not-exploitable | 所有利用尝试均失败 | 从报告中筛除 |
inconclusive | WAF/防御机制拦截,无法确定是否存在漏洞 | 提交人工审核 |
漏洞利用手册记忆
命名空间结构
aqe/pentest/
playbook/
exploit/{vuln_type}/{tech_stack}/{technique}
bypass/{defense_type}/{technique}
payload/{vuln_type}/{variant}
results/
validation-{timestamp}
poc/
{finding_id}-poc
学习循环
- 验证前:查询利用手册,查找与发现匹配的已知模式
- 验证期间:优先尝试已知载荷(成功率更高)
- 验证后:存储新的成功模式及其置信度评分
- 随着时间推移:Agent 会逐渐针对每种技术栈找到最有效的载荷
成本优化
各场景的预计成本
| 场景 | Tier 混合比例 | 发现数 | 预计成本 | 预计耗时 |
|---|
| PR 检查(仅源码) | 100% Tier 1 | 5 | $0 | <5s |
| 冲刺验证 | 70% T1,30% T2 | 15 | $2-5 | 5-10 min |
| 发布验证 | 40% T1,40% T2,20% T3 | 25 | $8-15 | 15-30 min |
| 完整渗透测试 | 20% T1,30% T2,50% T3 | 40 | $15-30 | 30-60 min |
与 Shannon 的成本对比
| 指标 | Shannon | AQE 渗透测试验证 |
|---|
| 单次运行成本 | ~$50 | $5-15(分级) |
| 运行时长 | 60-90 min | 15-30 min(并行流水线) |
| 误报率 | 低(已验证可利用) | 低(原理相同) |
| 学习能力 | 无(静态提示词) | ReasoningBank 利用手册 |
成功指标
| 指标 | 目标 | 衡量方式 |
|---|
| 误报减少率 | 消除 >60% 的发现 | 验证器运行前后对比 |
| 漏洞利用确认率 | >80% 的已确认发现确实可利用 | 人工 PoC 验证 |
| 单次运行成本 | <$15 USD | 按流水线追踪令牌用量 |
| 单次运行耗时 | <30 分钟 | 执行时间指标 |
| 利用手册增长 | 6 个月后达到 100+ 个模式 | 记忆命名空间数量 |
相关技能
牢记
“没有利用,就没有报告。” 无法证明漏洞可被利用的扫描器,提供的价值并不确定。此技能可将安全发现从理论风险转化为有证据的已验证漏洞。每个已确认的发现都附有可复现的概念验证。所有误报都会在进入报告前排除。
思考证据,而非预测。 不要报告可能存在漏洞的问题。要证明哪些问题确实存在漏洞。