blitzstrike 1.0.82 → 1.0.84
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/CHANGELOG.md +34 -0
- package/README.md +24 -24
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist/index.js +51 -1
- package/docs/AUTONOMY.md +48 -136
- package/docs/usage.md +1 -1
- package/intelligence/retry_guidance.json +67 -0
- package/package.json +1 -1
- package/intelligence/ab_signals.json +0 -722
- package/intelligence/attack_chains.json +0 -666
- package/intelligence/awaiting_input_markers.json +0 -37
- package/intelligence/endpoint_patterns.json +0 -541
- package/intelligence/escalation_patterns.json +0 -224
- package/intelligence/file_extensions.json +0 -6
- package/intelligence/patterns.json +0 -437
- package/intelligence/refusal_markers.json +0 -35
- package/intelligence/scan_profiles.json +0 -40
- package/intelligence/skills.json +0 -1185
- package/intelligence/tools.json +0 -1292
- package/intelligence/tools_meta.json +0 -1247
- package/intelligence/unified_patterns.json +0 -2329
- package/intelligence/verification_patterns.json +0 -52
- package/intelligence/vuln_ontology.json +0 -189
- package/intelligence/waff_bypass.json +0 -677
|
@@ -1,677 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_comment": "WAF Bypass & Validation Profiles: Comprehensive defensive WAF validation for authorized security testing. Edit here — never hardcode in Python. Fields: BYPASS_STRATEGIES (per-WAF techniques), WAF_PATTERNS (detection signatures), DETECTION_SCORING (thresholds), CHALLENGE_CLASSIFIERS (captcha/js/rate-limit detection), SAFE_TEST_POLICY (guardrails), OBSERVABILITY (telemetry), AUDIT_FIELDS (logging schema).",
|
|
3
|
-
"schema_version": "3.0.0",
|
|
4
|
-
"profile_type": "defensive_waf_validation",
|
|
5
|
-
"intent": "authorized_security_testing_only",
|
|
6
|
-
"description": "Comprehensive WAF validation profiles for controlled testing, detection quality checks, and response classification across 15+ WAF vendors.",
|
|
7
|
-
"BYPASS_STRATEGIES": {
|
|
8
|
-
"cloudflare": [
|
|
9
|
-
{
|
|
10
|
-
"name": "header_rotation",
|
|
11
|
-
"description": "Validate trust-boundary handling for forwarded IP headers in authorized tests",
|
|
12
|
-
"priority": 1,
|
|
13
|
-
"max_attempts": 3,
|
|
14
|
-
"cooldown_ms": 350,
|
|
15
|
-
"headers": {
|
|
16
|
-
"X-Forwarded-For": ["127.0.0.1", "10.0.0.1", "192.168.1.10", "172.16.0.1"],
|
|
17
|
-
"X-Real-IP": ["127.0.0.1", "10.0.0.1", "192.168.0.1"],
|
|
18
|
-
"CF-Connecting-IP": ["127.0.0.1", "10.10.10.10"],
|
|
19
|
-
"X-Client-IP": ["127.0.0.1", "192.168.1.1"],
|
|
20
|
-
"True-Client-IP": ["127.0.0.1", "10.0.0.100"]
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
"name": "encoding_bypass",
|
|
25
|
-
"description": "Check normalizer consistency across encoded input representations",
|
|
26
|
-
"priority": 2,
|
|
27
|
-
"max_attempts": 4,
|
|
28
|
-
"cooldown_ms": 400,
|
|
29
|
-
"encodings": ["url", "double_url", "unicode", "html_entity", "utf7", "base64"]
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"name": "http_method",
|
|
33
|
-
"description": "Compare filtering consistency across HTTP methods",
|
|
34
|
-
"priority": 3,
|
|
35
|
-
"max_attempts": 5,
|
|
36
|
-
"cooldown_ms": 500,
|
|
37
|
-
"methods": ["GET", "POST", "PUT", "PATCH", "OPTIONS", "HEAD", "DELETE", "CONNECT"]
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"name": "content_type",
|
|
41
|
-
"description": "Validate request parser parity across content-types",
|
|
42
|
-
"priority": 4,
|
|
43
|
-
"max_attempts": 4,
|
|
44
|
-
"cooldown_ms": 450,
|
|
45
|
-
"content_types": ["application/json", "application/xml", "application/x-www-form-urlencoded", "multipart/form-data", "text/plain", "application/graphql"]
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"name": "path_traversal",
|
|
49
|
-
"description": "Test URL path normalization bypass techniques",
|
|
50
|
-
"priority": 5,
|
|
51
|
-
"max_attempts": 3,
|
|
52
|
-
"cooldown_ms": 400,
|
|
53
|
-
"techniques": ["dot_dot_slash", "backslash", "url_encoded", "double_encoded", "unicode"]
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"name": "parameter_pollution",
|
|
57
|
-
"description": "Validate duplicate parameter handling behavior",
|
|
58
|
-
"priority": 6,
|
|
59
|
-
"max_attempts": 3,
|
|
60
|
-
"cooldown_ms": 350,
|
|
61
|
-
"technique": "duplicate_params"
|
|
62
|
-
}
|
|
63
|
-
],
|
|
64
|
-
"modsecurity": [
|
|
65
|
-
{
|
|
66
|
-
"name": "null_byte",
|
|
67
|
-
"description": "Evaluate null-byte handling behavior in backend parser chain",
|
|
68
|
-
"priority": 1,
|
|
69
|
-
"max_attempts": 3,
|
|
70
|
-
"cooldown_ms": 500,
|
|
71
|
-
"payloads": ["%00", "%2500", "\\x00", "0x00"]
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"name": "case_variation",
|
|
75
|
-
"description": "Evaluate case-insensitive token normalization behavior",
|
|
76
|
-
"priority": 2,
|
|
77
|
-
"max_attempts": 2,
|
|
78
|
-
"cooldown_ms": 350,
|
|
79
|
-
"transform": "case_mix"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"name": "whitespace",
|
|
83
|
-
"description": "Assess parser behavior around alternate whitespace characters",
|
|
84
|
-
"priority": 3,
|
|
85
|
-
"max_attempts": 4,
|
|
86
|
-
"cooldown_ms": 450,
|
|
87
|
-
"whitespace": ["%09", "%0A", "%0D", "%0C", "%20", "+"]
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"name": "content_type",
|
|
91
|
-
"description": "Check content-type policy consistency for rule application",
|
|
92
|
-
"priority": 4,
|
|
93
|
-
"max_attempts": 3,
|
|
94
|
-
"cooldown_ms": 500,
|
|
95
|
-
"content_types": ["application/json", "application/x-www-form-urlencoded", "text/plain", "multipart/form-data"]
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"name": "sql_comment",
|
|
99
|
-
"description": "Test SQL comment delimiter handling",
|
|
100
|
-
"priority": 5,
|
|
101
|
-
"max_attempts": 4,
|
|
102
|
-
"cooldown_ms": 300,
|
|
103
|
-
"comments": ["--", "#", "/*", "*/", "-- -", "#-", "/*-", "/*!"]
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
"name": "protocol_version",
|
|
107
|
-
"description": "Test HTTP/1.0 vs HTTP/1.1 vs HTTP/2 handling differences",
|
|
108
|
-
"priority": 6,
|
|
109
|
-
"max_attempts": 3,
|
|
110
|
-
"cooldown_ms": 400,
|
|
111
|
-
"protocols": ["HTTP/1.0", "HTTP/1.1", "HTTP/2"]
|
|
112
|
-
}
|
|
113
|
-
],
|
|
114
|
-
"sucuri": [
|
|
115
|
-
{
|
|
116
|
-
"name": "cookie_bypass",
|
|
117
|
-
"description": "Validate cookie-driven challenge transitions under authorized scope",
|
|
118
|
-
"priority": 1,
|
|
119
|
-
"max_attempts": 2,
|
|
120
|
-
"cooldown_ms": 800,
|
|
121
|
-
"cookies": {
|
|
122
|
-
"sucuri_cloudproxy_vis": "1",
|
|
123
|
-
"__sucuri_cookie": "verified",
|
|
124
|
-
"sucuri_cache_bypass": "true"
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"name": "http_method",
|
|
129
|
-
"description": "Evaluate challenge consistency across idempotent/non-idempotent verbs",
|
|
130
|
-
"priority": 2,
|
|
131
|
-
"max_attempts": 4,
|
|
132
|
-
"cooldown_ms": 650,
|
|
133
|
-
"methods": ["GET", "HEAD", "POST", "OPTIONS", "PUT"]
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"name": "user_agent_rotation",
|
|
137
|
-
"description": "Test UA-based challenge triggering",
|
|
138
|
-
"priority": 3,
|
|
139
|
-
"max_attempts": 3,
|
|
140
|
-
"cooldown_ms": 500,
|
|
141
|
-
"user_agents": ["Mozilla/5.0", "curl/7.68.0", "python-requests/2.25.1", "Googlebot/2.1"]
|
|
142
|
-
}
|
|
143
|
-
],
|
|
144
|
-
"akamai": [
|
|
145
|
-
{
|
|
146
|
-
"name": "parameter_pollution",
|
|
147
|
-
"description": "Check duplicated parameter canonicalization behavior",
|
|
148
|
-
"priority": 1,
|
|
149
|
-
"max_attempts": 3,
|
|
150
|
-
"cooldown_ms": 700,
|
|
151
|
-
"technique": "duplicate_params"
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"name": "header_rotation",
|
|
155
|
-
"description": "Validate header trust boundaries for upstream metadata",
|
|
156
|
-
"priority": 2,
|
|
157
|
-
"max_attempts": 3,
|
|
158
|
-
"cooldown_ms": 650,
|
|
159
|
-
"headers": {
|
|
160
|
-
"X-Forwarded-Host": ["localhost", "internal.local", "admin.local"],
|
|
161
|
-
"X-Host": ["localhost", "127.0.0.1"],
|
|
162
|
-
"X-Forwarded-Server": ["internal.akamai.net"]
|
|
163
|
-
}
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
"name": "edge_cache_bypass",
|
|
167
|
-
"description": "Test cache key manipulation techniques",
|
|
168
|
-
"priority": 3,
|
|
169
|
-
"max_attempts": 3,
|
|
170
|
-
"cooldown_ms": 600,
|
|
171
|
-
"techniques": ["cache_buster_param", "header_manipulation", "cookie_injection"]
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
"name": "content_type",
|
|
175
|
-
"description": "Validate content-type based rule application",
|
|
176
|
-
"priority": 4,
|
|
177
|
-
"max_attempts": 3,
|
|
178
|
-
"cooldown_ms": 500,
|
|
179
|
-
"content_types": ["application/json", "application/xml", "text/plain"]
|
|
180
|
-
}
|
|
181
|
-
],
|
|
182
|
-
"aws_waf": [
|
|
183
|
-
{
|
|
184
|
-
"name": "http_method",
|
|
185
|
-
"description": "Compare rule behavior between GET/POST/OPTIONS requests",
|
|
186
|
-
"priority": 1,
|
|
187
|
-
"max_attempts": 3,
|
|
188
|
-
"cooldown_ms": 500,
|
|
189
|
-
"methods": ["GET", "POST", "OPTIONS", "PUT", "PATCH"]
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
"name": "content_type",
|
|
193
|
-
"description": "Check parser and rule-set consistency by body encoding",
|
|
194
|
-
"priority": 2,
|
|
195
|
-
"max_attempts": 3,
|
|
196
|
-
"cooldown_ms": 450,
|
|
197
|
-
"content_types": ["application/json", "application/x-www-form-urlencoded", "text/plain", "application/graphql"]
|
|
198
|
-
},
|
|
199
|
-
{
|
|
200
|
-
"name": "regional_bypass",
|
|
201
|
-
"description": "Test geographic-based rule variations",
|
|
202
|
-
"priority": 3,
|
|
203
|
-
"max_attempts": 2,
|
|
204
|
-
"cooldown_ms": 600,
|
|
205
|
-
"headers": {
|
|
206
|
-
"CloudFront-Viewer-Country": ["US", "GB", "DE", "JP"],
|
|
207
|
-
"CloudFront-Is-Mobile-Viewer": ["true", "false"]
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
"name": "rate_limit_bypass",
|
|
212
|
-
"description": "Test rate limiting rule evasion",
|
|
213
|
-
"priority": 4,
|
|
214
|
-
"max_attempts": 5,
|
|
215
|
-
"cooldown_ms": 800,
|
|
216
|
-
"techniques": ["ip_rotation", "header_spoofing", "distributed_requests"]
|
|
217
|
-
}
|
|
218
|
-
],
|
|
219
|
-
"imperva": [
|
|
220
|
-
{
|
|
221
|
-
"name": "header_rotation",
|
|
222
|
-
"description": "Evaluate IP and client-header canonicalization behavior",
|
|
223
|
-
"priority": 1,
|
|
224
|
-
"max_attempts": 3,
|
|
225
|
-
"cooldown_ms": 700,
|
|
226
|
-
"headers": {
|
|
227
|
-
"X-Forwarded-For": ["127.0.0.1", "10.1.1.10", "192.168.100.1"],
|
|
228
|
-
"X-Client-IP": ["127.0.0.1", "10.0.0.1"]
|
|
229
|
-
}
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
"name": "encoding_bypass",
|
|
233
|
-
"description": "Test decoder parity for encoded tokens",
|
|
234
|
-
"priority": 2,
|
|
235
|
-
"max_attempts": 4,
|
|
236
|
-
"cooldown_ms": 550,
|
|
237
|
-
"encodings": ["url", "double_url", "html_entity", "unicode"]
|
|
238
|
-
},
|
|
239
|
-
{
|
|
240
|
-
"name": "websocket_bypass",
|
|
241
|
-
"description": "Test WebSocket upgrade request handling",
|
|
242
|
-
"priority": 3,
|
|
243
|
-
"max_attempts": 2,
|
|
244
|
-
"cooldown_ms": 600,
|
|
245
|
-
"headers": {
|
|
246
|
-
"Upgrade": "websocket",
|
|
247
|
-
"Connection": "Upgrade"
|
|
248
|
-
}
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
"name": "http2_multiplex",
|
|
252
|
-
"description": "Test HTTP/2 multiplexing bypass",
|
|
253
|
-
"priority": 4,
|
|
254
|
-
"max_attempts": 2,
|
|
255
|
-
"cooldown_ms": 700,
|
|
256
|
-
"protocol": "HTTP/2"
|
|
257
|
-
}
|
|
258
|
-
],
|
|
259
|
-
"f5_asm": [
|
|
260
|
-
{
|
|
261
|
-
"name": "content_type",
|
|
262
|
-
"description": "Validate policy handling for multi-format body parsing",
|
|
263
|
-
"priority": 1,
|
|
264
|
-
"max_attempts": 4,
|
|
265
|
-
"cooldown_ms": 600,
|
|
266
|
-
"content_types": ["application/json", "application/xml", "multipart/form-data", "application/x-www-form-urlencoded"]
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
"name": "case_variation",
|
|
270
|
-
"description": "Check token canonicalization across case variants",
|
|
271
|
-
"priority": 2,
|
|
272
|
-
"max_attempts": 3,
|
|
273
|
-
"cooldown_ms": 450,
|
|
274
|
-
"transform": "case_mix"
|
|
275
|
-
},
|
|
276
|
-
{
|
|
277
|
-
"name": "xml_attack",
|
|
278
|
-
"description": "Test XML parsing policy enforcement",
|
|
279
|
-
"priority": 3,
|
|
280
|
-
"max_attempts": 3,
|
|
281
|
-
"cooldown_ms": 500,
|
|
282
|
-
"payloads": ["<!DOCTYPE", "<!ENTITY", "<?xml", "<soap"]
|
|
283
|
-
},
|
|
284
|
-
{
|
|
285
|
-
"name": "json_manipulation",
|
|
286
|
-
"description": "Test JSON parsing edge cases",
|
|
287
|
-
"priority": 4,
|
|
288
|
-
"max_attempts": 3,
|
|
289
|
-
"cooldown_ms": 450,
|
|
290
|
-
"techniques": ["json_injection", "prototype_pollution", "nested_objects"]
|
|
291
|
-
}
|
|
292
|
-
],
|
|
293
|
-
"fastly": [
|
|
294
|
-
{
|
|
295
|
-
"name": "http_method",
|
|
296
|
-
"description": "Assess method-specific edge filtering behavior",
|
|
297
|
-
"priority": 1,
|
|
298
|
-
"max_attempts": 4,
|
|
299
|
-
"cooldown_ms": 500,
|
|
300
|
-
"methods": ["GET", "HEAD", "POST", "PUT", "PATCH", "DELETE"]
|
|
301
|
-
},
|
|
302
|
-
{
|
|
303
|
-
"name": "surrogate_key",
|
|
304
|
-
"description": "Test cache surrogate key manipulation",
|
|
305
|
-
"priority": 2,
|
|
306
|
-
"max_attempts": 2,
|
|
307
|
-
"cooldown_ms": 600,
|
|
308
|
-
"headers": {
|
|
309
|
-
"Surrogate-Key": ["test", "bypass", "cache_clear"]
|
|
310
|
-
}
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
"name": "edge_dict",
|
|
314
|
-
"description": "Test edge dictionary based rule bypass",
|
|
315
|
-
"priority": 3,
|
|
316
|
-
"max_attempts": 2,
|
|
317
|
-
"cooldown_ms": 550,
|
|
318
|
-
"techniques": ["path_manipulation", "query_string_bypass"]
|
|
319
|
-
}
|
|
320
|
-
],
|
|
321
|
-
"barracuda": [
|
|
322
|
-
{
|
|
323
|
-
"name": "cookie_injection",
|
|
324
|
-
"description": "Test cookie-based security policy bypass",
|
|
325
|
-
"priority": 1,
|
|
326
|
-
"max_attempts": 3,
|
|
327
|
-
"cooldown_ms": 600,
|
|
328
|
-
"cookies": {
|
|
329
|
-
"barra_counter": "0",
|
|
330
|
-
"bni__BARRACUDA_LB_COOKIE": "test"
|
|
331
|
-
}
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
"name": "url_encoding",
|
|
335
|
-
"description": "Test URL encoding normalization",
|
|
336
|
-
"priority": 2,
|
|
337
|
-
"max_attempts": 4,
|
|
338
|
-
"cooldown_ms": 500,
|
|
339
|
-
"encodings": ["url", "double_url", "unicode"]
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
"name": "form_field_manipulation",
|
|
343
|
-
"description": "Test form field validation bypass",
|
|
344
|
-
"priority": 3,
|
|
345
|
-
"max_attempts": 3,
|
|
346
|
-
"cooldown_ms": 450,
|
|
347
|
-
"techniques": ["field_omission", "extra_fields", "type_confusion"]
|
|
348
|
-
}
|
|
349
|
-
],
|
|
350
|
-
"citrix_netscaler": [
|
|
351
|
-
{
|
|
352
|
-
"name": "appfirewall_bypass",
|
|
353
|
-
"description": "Test AppFirewall policy enforcement",
|
|
354
|
-
"priority": 1,
|
|
355
|
-
"max_attempts": 3,
|
|
356
|
-
"cooldown_ms": 600,
|
|
357
|
-
"techniques": ["start_url_bypass", "deny_url_bypass", "form_field_bypass"]
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
"name": "content_type",
|
|
361
|
-
"description": "Validate content-type based policy application",
|
|
362
|
-
"priority": 2,
|
|
363
|
-
"max_attempts": 3,
|
|
364
|
-
"cooldown_ms": 500,
|
|
365
|
-
"content_types": ["application/json", "application/xml", "text/plain"]
|
|
366
|
-
},
|
|
367
|
-
{
|
|
368
|
-
"name": "header_manipulation",
|
|
369
|
-
"description": "Test header-based security checks",
|
|
370
|
-
"priority": 3,
|
|
371
|
-
"max_attempts": 3,
|
|
372
|
-
"cooldown_ms": 550,
|
|
373
|
-
"headers": {
|
|
374
|
-
"X-Netscaler-Through": "test",
|
|
375
|
-
"Citrix-Through": "test"
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
],
|
|
379
|
-
"fortinet_fortiwaf": [
|
|
380
|
-
{
|
|
381
|
-
"name": "profile_bypass",
|
|
382
|
-
"description": "Test security profile enforcement",
|
|
383
|
-
"priority": 1,
|
|
384
|
-
"max_attempts": 3,
|
|
385
|
-
"cooldown_ms": 600,
|
|
386
|
-
"techniques": ["web_protection_bypass", "advanced_protection_bypass"]
|
|
387
|
-
},
|
|
388
|
-
{
|
|
389
|
-
"name": "http_method",
|
|
390
|
-
"description": "Test method-based policy variations",
|
|
391
|
-
"priority": 2,
|
|
392
|
-
"max_attempts": 4,
|
|
393
|
-
"cooldown_ms": 500,
|
|
394
|
-
"methods": ["GET", "POST", "PUT", "DELETE"]
|
|
395
|
-
},
|
|
396
|
-
{
|
|
397
|
-
"name": "bot_detection_bypass",
|
|
398
|
-
"description": "Test bot detection evasion",
|
|
399
|
-
"priority": 3,
|
|
400
|
-
"max_attempts": 3,
|
|
401
|
-
"cooldown_ms": 700,
|
|
402
|
-
"headers": {
|
|
403
|
-
"X-FortiBot": "false",
|
|
404
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
],
|
|
408
|
-
"radware_appwall": [
|
|
409
|
-
{
|
|
410
|
-
"name": "security_policy_bypass",
|
|
411
|
-
"description": "Test security policy rule enforcement",
|
|
412
|
-
"priority": 1,
|
|
413
|
-
"max_attempts": 3,
|
|
414
|
-
"cooldown_ms": 600,
|
|
415
|
-
"techniques": ["url_validation_bypass", "parameter_validation_bypass"]
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
"name": "content_type",
|
|
419
|
-
"description": "Validate content-type based rule application",
|
|
420
|
-
"priority": 2,
|
|
421
|
-
"max_attempts": 3,
|
|
422
|
-
"cooldown_ms": 500,
|
|
423
|
-
"content_types": ["application/json", "application/xml", "text/plain"]
|
|
424
|
-
}
|
|
425
|
-
],
|
|
426
|
-
"stackpath": [
|
|
427
|
-
{
|
|
428
|
-
"name": "edge_rule_bypass",
|
|
429
|
-
"description": "Test edge rule enforcement",
|
|
430
|
-
"priority": 1,
|
|
431
|
-
"max_attempts": 3,
|
|
432
|
-
"cooldown_ms": 550,
|
|
433
|
-
"techniques": ["geo_bypass", "rate_limit_bypass"]
|
|
434
|
-
},
|
|
435
|
-
{
|
|
436
|
-
"name": "header_injection",
|
|
437
|
-
"description": "Test header-based security checks",
|
|
438
|
-
"priority": 2,
|
|
439
|
-
"max_attempts": 3,
|
|
440
|
-
"cooldown_ms": 500,
|
|
441
|
-
"headers": {
|
|
442
|
-
"X-StackPath-Edge": "test"
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
],
|
|
446
|
-
"wordfence": [
|
|
447
|
-
{
|
|
448
|
-
"name": "firewall_bypass",
|
|
449
|
-
"description": "Test Wordfence firewall rules",
|
|
450
|
-
"priority": 1,
|
|
451
|
-
"max_attempts": 3,
|
|
452
|
-
"cooldown_ms": 600,
|
|
453
|
-
"techniques": ["sql_injection_bypass", "xss_bypass", "lfi_bypass"]
|
|
454
|
-
},
|
|
455
|
-
{
|
|
456
|
-
"name": "rate_limit_bypass",
|
|
457
|
-
"description": "Test rate limiting enforcement",
|
|
458
|
-
"priority": 2,
|
|
459
|
-
"max_attempts": 4,
|
|
460
|
-
"cooldown_ms": 700,
|
|
461
|
-
"techniques": ["ip_spoofing", "user_agent_rotation"]
|
|
462
|
-
}
|
|
463
|
-
],
|
|
464
|
-
"generic": [
|
|
465
|
-
{
|
|
466
|
-
"name": "sql_comment",
|
|
467
|
-
"description": "Validate signature sensitivity around delimiter/comment tokens",
|
|
468
|
-
"priority": 1,
|
|
469
|
-
"max_attempts": 4,
|
|
470
|
-
"cooldown_ms": 300,
|
|
471
|
-
"comments": ["--", "#", "/*", "-- -", "#-", "/*-", "/*!", "*/"]
|
|
472
|
-
},
|
|
473
|
-
{
|
|
474
|
-
"name": "concatenation",
|
|
475
|
-
"description": "Validate parser handling of operator-based concatenation tokens",
|
|
476
|
-
"priority": 2,
|
|
477
|
-
"max_attempts": 3,
|
|
478
|
-
"cooldown_ms": 350,
|
|
479
|
-
"operators": ["||", "+", "CONCAT(", "CONCAT_WS(", "GROUP_CONCAT("]
|
|
480
|
-
},
|
|
481
|
-
{
|
|
482
|
-
"name": "http_method",
|
|
483
|
-
"description": "Baseline method variance check for unknown WAF profiles",
|
|
484
|
-
"priority": 3,
|
|
485
|
-
"max_attempts": 3,
|
|
486
|
-
"cooldown_ms": 400,
|
|
487
|
-
"methods": ["GET", "POST", "HEAD", "PUT", "OPTIONS"]
|
|
488
|
-
},
|
|
489
|
-
{
|
|
490
|
-
"name": "encoding_chain",
|
|
491
|
-
"description": "Test multi-layer encoding bypass",
|
|
492
|
-
"priority": 4,
|
|
493
|
-
"max_attempts": 5,
|
|
494
|
-
"cooldown_ms": 400,
|
|
495
|
-
"encodings": ["url", "double_url", "triple_url", "unicode", "html_entity"]
|
|
496
|
-
},
|
|
497
|
-
{
|
|
498
|
-
"name": "protocol_abuse",
|
|
499
|
-
"description": "Test protocol-level bypass techniques",
|
|
500
|
-
"priority": 5,
|
|
501
|
-
"max_attempts": 3,
|
|
502
|
-
"cooldown_ms": 500,
|
|
503
|
-
"techniques": ["chunked_encoding", "http_desync", "header_injection"]
|
|
504
|
-
}
|
|
505
|
-
]
|
|
506
|
-
},
|
|
507
|
-
"WAF_PATTERNS": {
|
|
508
|
-
"cloudflare": {
|
|
509
|
-
"headers": ["cf-ray", "cf-cache-status", "cf-request-id", "cf-mitigated", "cf-chl-bypass"],
|
|
510
|
-
"cookies": ["__cfduid", "cf_clearance", "__cf_bm", "cf_use_ob"],
|
|
511
|
-
"server": ["cloudflare"],
|
|
512
|
-
"body": ["attention required", "checking your browser", "cloudflare ray id", "ddos protection", "please complete the security check"],
|
|
513
|
-
"status_codes": [403, 429, 503, 520, 521, 522, 523, 524],
|
|
514
|
-
"confidence_weights": {"headers": 0.35, "cookies": 0.25, "body": 0.2, "server": 0.2}
|
|
515
|
-
},
|
|
516
|
-
"modsecurity": {
|
|
517
|
-
"headers": ["mod_security", "x-modsecurity", "x-modsecurity-message"],
|
|
518
|
-
"body": ["modsecurity", "access denied by rule set", "not acceptable", "modsecurity audit log", "id"],
|
|
519
|
-
"status_codes": [403, 406, 503],
|
|
520
|
-
"confidence_weights": {"headers": 0.4, "body": 0.35, "status_codes": 0.25}
|
|
521
|
-
},
|
|
522
|
-
"sucuri": {
|
|
523
|
-
"headers": ["x-sucuri-id", "x-sucuri-cache", "x-sucuri-firewall"],
|
|
524
|
-
"cookies": ["sucuri_cloudproxy_vis", "__sucuri_cookie"],
|
|
525
|
-
"body": ["sucuri website firewall", "access denied", "contact the website owner"],
|
|
526
|
-
"status_codes": [403, 429],
|
|
527
|
-
"confidence_weights": {"headers": 0.4, "cookies": 0.3, "body": 0.3}
|
|
528
|
-
},
|
|
529
|
-
"akamai": {
|
|
530
|
-
"headers": ["x-akamai-transformed", "akamai-ghost", "x-akamai-request-id", "x-checkpoint"],
|
|
531
|
-
"server": ["akamai", "edge"],
|
|
532
|
-
"body": ["reference #", "access denied", "akamai technologies", "client ip"],
|
|
533
|
-
"status_codes": [403, 406, 429],
|
|
534
|
-
"confidence_weights": {"headers": 0.4, "server": 0.2, "body": 0.25, "status_codes": 0.15}
|
|
535
|
-
},
|
|
536
|
-
"aws_waf": {
|
|
537
|
-
"headers": ["x-amzn-waf", "x-amz-cf-id", "x-cache", "x-edge-result-type"],
|
|
538
|
-
"server": ["cloudfront", "amazon"],
|
|
539
|
-
"body": ["request blocked", "access denied", "generated by cloudfront"],
|
|
540
|
-
"status_codes": [403, 405, 429],
|
|
541
|
-
"confidence_weights": {"headers": 0.4, "server": 0.2, "body": 0.25, "status_codes": 0.15}
|
|
542
|
-
},
|
|
543
|
-
"imperva": {
|
|
544
|
-
"headers": ["x-iinfo", "x-cdn", "x-incap-sig"],
|
|
545
|
-
"cookies": ["visid_incap_", "incap_ses_", "nlbi_", "aicookie"],
|
|
546
|
-
"body": ["incapsula incident id", "access denied", "imperva", "your ip has been blocked"],
|
|
547
|
-
"status_codes": [403, 405, 429],
|
|
548
|
-
"confidence_weights": {"headers": 0.35, "cookies": 0.3, "body": 0.25, "status_codes": 0.1}
|
|
549
|
-
},
|
|
550
|
-
"f5_asm": {
|
|
551
|
-
"headers": ["x-waf-status", "x-support-id", "x-csrf-token"],
|
|
552
|
-
"body": ["the requested url was rejected", "f5", "asm", "access denied", "support id"],
|
|
553
|
-
"status_codes": [403, 429],
|
|
554
|
-
"confidence_weights": {"headers": 0.4, "body": 0.4, "status_codes": 0.2}
|
|
555
|
-
},
|
|
556
|
-
"fastly": {
|
|
557
|
-
"headers": ["x-served-by", "x-cache-hits", "x-cache", "fastly-req-id"],
|
|
558
|
-
"server": ["fastly"],
|
|
559
|
-
"status_codes": [403, 429],
|
|
560
|
-
"confidence_weights": {"headers": 0.5, "server": 0.3, "status_codes": 0.2}
|
|
561
|
-
},
|
|
562
|
-
"barracuda": {
|
|
563
|
-
"headers": ["x-barracuda-lb", "x-barracuda-cookie"],
|
|
564
|
-
"cookies": ["barra_counter", "bni__BARRACUDA_LB_COOKIE"],
|
|
565
|
-
"body": ["barracuda", "access denied", "blocked by security policy"],
|
|
566
|
-
"status_codes": [403, 429],
|
|
567
|
-
"confidence_weights": {"headers": 0.35, "cookies": 0.35, "body": 0.2, "status_codes": 0.1}
|
|
568
|
-
},
|
|
569
|
-
"citrix_netscaler": {
|
|
570
|
-
"headers": ["x-netscaler-through", "citrix-through", "ns-cache"],
|
|
571
|
-
"body": ["citrix", "netscaler", "access denied", "violation"],
|
|
572
|
-
"status_codes": [403, 406],
|
|
573
|
-
"confidence_weights": {"headers": 0.4, "body": 0.4, "status_codes": 0.2}
|
|
574
|
-
},
|
|
575
|
-
"fortinet_fortiwaf": {
|
|
576
|
-
"headers": ["x-fortiwaf", "x-fortigate-sid"],
|
|
577
|
-
"body": ["fortinet", "fortiwaf", "access denied", "web application firewall"],
|
|
578
|
-
"status_codes": [403, 429],
|
|
579
|
-
"confidence_weights": {"headers": 0.4, "body": 0.4, "status_codes": 0.2}
|
|
580
|
-
},
|
|
581
|
-
"radware_appwall": {
|
|
582
|
-
"headers": ["x-radware-protection"],
|
|
583
|
-
"body": ["radware", "appwall", "security violation", "access denied"],
|
|
584
|
-
"status_codes": [403, 429],
|
|
585
|
-
"confidence_weights": {"headers": 0.4, "body": 0.4, "status_codes": 0.2}
|
|
586
|
-
},
|
|
587
|
-
"stackpath": {
|
|
588
|
-
"headers": ["x-stackpath", "x-edge-location"],
|
|
589
|
-
"body": ["stackpath", "access denied", "blocked"],
|
|
590
|
-
"status_codes": [403, 429],
|
|
591
|
-
"confidence_weights": {"headers": 0.4, "body": 0.4, "status_codes": 0.2}
|
|
592
|
-
},
|
|
593
|
-
"wordfence": {
|
|
594
|
-
"headers": ["x-wordfence"],
|
|
595
|
-
"cookies": ["wf_captcha", "wf_logintime"],
|
|
596
|
-
"body": ["wordfence", "blocked by wordfence", "security check"],
|
|
597
|
-
"status_codes": [403, 429],
|
|
598
|
-
"confidence_weights": {"headers": 0.3, "cookies": 0.3, "body": 0.3, "status_codes": 0.1}
|
|
599
|
-
}
|
|
600
|
-
},
|
|
601
|
-
"DETECTION_SCORING": {
|
|
602
|
-
"minimum_detection_score": 2,
|
|
603
|
-
"minimum_confidence_for_active_profile": 0.55,
|
|
604
|
-
"status_block_weight": 0.2,
|
|
605
|
-
"max_confidence": 1.0,
|
|
606
|
-
"evidence_cap": 10,
|
|
607
|
-
"header_match_bonus": 0.15,
|
|
608
|
-
"cookie_match_bonus": 0.1,
|
|
609
|
-
"body_match_bonus": 0.1,
|
|
610
|
-
"server_match_bonus": 0.05,
|
|
611
|
-
"multi_indicator_bonus": 0.2
|
|
612
|
-
},
|
|
613
|
-
"CHALLENGE_CLASSIFIERS": {
|
|
614
|
-
"captcha_indicators": ["captcha", "hcaptcha", "recaptcha", "turnstile", "cloudflare challenge", "verify you are human"],
|
|
615
|
-
"js_challenge_indicators": ["checking your browser", "enable javascript", "jschl", "js_challenge", "browser verification"],
|
|
616
|
-
"rate_limit_indicators": ["too many requests", "rate limit", "retry later", "throttled", "quota exceeded"],
|
|
617
|
-
"auth_challenge_indicators": ["unauthorized", "authentication required", "access token", "401 unauthorized", "login required"],
|
|
618
|
-
"waf_block_indicators": ["access denied", "blocked", "forbidden", "security violation", "firewall", "waf"],
|
|
619
|
-
"bot_detection_indicators": ["bot detected", "suspicious activity", "automated access", "bot protection"]
|
|
620
|
-
},
|
|
621
|
-
"SAFE_TEST_POLICY": {
|
|
622
|
-
"require_authorized_scope": true,
|
|
623
|
-
"forbid_destructive_payloads": true,
|
|
624
|
-
"forbid_data_exfiltration_payloads": true,
|
|
625
|
-
"forbid_dos_payloads": true,
|
|
626
|
-
"max_total_attempts_per_endpoint": 20,
|
|
627
|
-
"max_strategies_per_profile": 6,
|
|
628
|
-
"default_cooldown_ms": 500,
|
|
629
|
-
"stop_on_repeated_5xx": {"enabled": true, "threshold": 3},
|
|
630
|
-
"stop_on_account_lockout_signal": {
|
|
631
|
-
"enabled": true,
|
|
632
|
-
"patterns": ["account locked", "temporarily blocked", "too many failed attempts", "suspended", "disabled"]
|
|
633
|
-
},
|
|
634
|
-
"stop_on_legal_warning": {
|
|
635
|
-
"enabled": true,
|
|
636
|
-
"patterns": ["legal action", "cease and desist", "unauthorized access", "computer fraud", "terms of service violation"]
|
|
637
|
-
},
|
|
638
|
-
"respect_robots_txt": true,
|
|
639
|
-
"respect_rate_limit_headers": true
|
|
640
|
-
},
|
|
641
|
-
"OBSERVABILITY": {
|
|
642
|
-
"record_request_fingerprint": true,
|
|
643
|
-
"record_response_status": true,
|
|
644
|
-
"record_response_size_delta": true,
|
|
645
|
-
"record_latency_ms": true,
|
|
646
|
-
"record_challenge_type": true,
|
|
647
|
-
"record_waf_evidence": true,
|
|
648
|
-
"record_bypass_success": true,
|
|
649
|
-
"record_false_positive_rate": true,
|
|
650
|
-
"record_detection_time_ms": true
|
|
651
|
-
},
|
|
652
|
-
"AUDIT_FIELDS": [
|
|
653
|
-
"strategy_name",
|
|
654
|
-
"waf_profile",
|
|
655
|
-
"target_host",
|
|
656
|
-
"target_path",
|
|
657
|
-
"http_method",
|
|
658
|
-
"request_headers_hash",
|
|
659
|
-
"request_body_hash",
|
|
660
|
-
"response_status",
|
|
661
|
-
"response_length",
|
|
662
|
-
"latency_ms",
|
|
663
|
-
"challenge_classifier",
|
|
664
|
-
"evidence",
|
|
665
|
-
"timestamp_utc",
|
|
666
|
-
"bypass_successful",
|
|
667
|
-
"detection_score",
|
|
668
|
-
"confidence_level"
|
|
669
|
-
],
|
|
670
|
-
"REPORTING": {
|
|
671
|
-
"generate_summary": true,
|
|
672
|
-
"include_evidence": true,
|
|
673
|
-
"include_recommendations": true,
|
|
674
|
-
"severity_threshold": "MEDIUM",
|
|
675
|
-
"export_formats": ["json", "csv", "html"]
|
|
676
|
-
}
|
|
677
|
-
}
|