@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,421 @@
1
+ [
2
+ {
3
+ "id": "AUTH-OAUTH-040",
4
+ "payload": "redirect_uri=https://attacker.com/callback",
5
+ "tags": [
6
+ "redirect-uri",
7
+ "open-redirect",
8
+ "quick",
9
+ "critical"
10
+ ],
11
+ "expected_block": true,
12
+ "severity_hint": "Critical",
13
+ "notes": "OAuth redirect_uri manipulation - authorization code interception",
14
+ "category": "Auth"
15
+ },
16
+ {
17
+ "id": "AUTH-OAUTH-041",
18
+ "payload": "redirect_uri=https://legitimate.com@attacker.com/callback",
19
+ "tags": [
20
+ "redirect-uri",
21
+ "url-parsing",
22
+ "quick",
23
+ "critical"
24
+ ],
25
+ "expected_block": true,
26
+ "severity_hint": "Critical",
27
+ "notes": "OAuth redirect_uri with @ character - URL parser confusion",
28
+ "category": "Auth"
29
+ },
30
+ {
31
+ "id": "AUTH-OAUTH-042",
32
+ "payload": "redirect_uri=https://legitimate.com.attacker.com/callback",
33
+ "tags": [
34
+ "redirect-uri",
35
+ "subdomain-takeover",
36
+ "quick",
37
+ "critical"
38
+ ],
39
+ "expected_block": true,
40
+ "severity_hint": "Critical",
41
+ "notes": "OAuth redirect_uri subdomain confusion - lookalike domain",
42
+ "category": "Auth"
43
+ },
44
+ {
45
+ "id": "AUTH-OAUTH-043",
46
+ "payload": "redirect_uri=https://legitimate.com/../../../attacker.com/callback",
47
+ "tags": [
48
+ "redirect-uri",
49
+ "path-traversal",
50
+ "quick",
51
+ "critical"
52
+ ],
53
+ "expected_block": true,
54
+ "severity_hint": "Critical",
55
+ "notes": "OAuth redirect_uri with path traversal - domain escape attempt",
56
+ "category": "Auth"
57
+ },
58
+ {
59
+ "id": "AUTH-OAUTH-044",
60
+ "payload": "redirect_uri=javascript:alert(document.domain)",
61
+ "tags": [
62
+ "redirect-uri",
63
+ "xss",
64
+ "quick",
65
+ "critical"
66
+ ],
67
+ "expected_block": true,
68
+ "severity_hint": "Critical",
69
+ "notes": "OAuth redirect_uri with javascript: protocol - XSS via OAuth flow",
70
+ "category": "Auth"
71
+ },
72
+ {
73
+ "id": "AUTH-OAUTH-045",
74
+ "payload": "redirect_uri=data:text/html,<script>alert(1)</script>",
75
+ "tags": [
76
+ "redirect-uri",
77
+ "xss",
78
+ "quick",
79
+ "critical"
80
+ ],
81
+ "expected_block": true,
82
+ "severity_hint": "Critical",
83
+ "notes": "OAuth redirect_uri with data: protocol - inline XSS payload",
84
+ "category": "Auth"
85
+ },
86
+ {
87
+ "id": "AUTH-OAUTH-046",
88
+ "payload": "state=",
89
+ "tags": [
90
+ "state-parameter",
91
+ "csrf",
92
+ "quick",
93
+ "high"
94
+ ],
95
+ "expected_block": false,
96
+ "severity_hint": "High",
97
+ "notes": "OAuth with empty state parameter - CSRF protection bypass",
98
+ "category": "Auth"
99
+ },
100
+ {
101
+ "id": "AUTH-OAUTH-047",
102
+ "payload": "state=static_value",
103
+ "tags": [
104
+ "state-parameter",
105
+ "csrf",
106
+ "quick",
107
+ "high"
108
+ ],
109
+ "expected_block": false,
110
+ "severity_hint": "High",
111
+ "notes": "OAuth with predictable state - CSRF attack via replay",
112
+ "category": "Auth"
113
+ },
114
+ {
115
+ "id": "AUTH-OAUTH-048",
116
+ "payload": "code=AUTH_CODE_123&state=ATTACKER_STATE",
117
+ "tags": [
118
+ "authorization-code",
119
+ "replay",
120
+ "quick",
121
+ "critical"
122
+ ],
123
+ "expected_block": false,
124
+ "severity_hint": "Critical",
125
+ "notes": "OAuth authorization code replay with mismatched state",
126
+ "category": "Auth"
127
+ },
128
+ {
129
+ "id": "AUTH-OAUTH-049",
130
+ "payload": "code=AUTH_CODE_123&code=AUTH_CODE_456",
131
+ "tags": [
132
+ "authorization-code",
133
+ "parameter-pollution",
134
+ "high"
135
+ ],
136
+ "expected_block": false,
137
+ "severity_hint": "High",
138
+ "notes": "OAuth with duplicate code parameters - HPP (HTTP Parameter Pollution)",
139
+ "category": "Auth"
140
+ },
141
+ {
142
+ "id": "AUTH-OAUTH-050",
143
+ "payload": "response_type=token&redirect_uri=https://attacker.com",
144
+ "tags": [
145
+ "implicit-flow",
146
+ "token-leakage",
147
+ "quick",
148
+ "critical"
149
+ ],
150
+ "expected_block": true,
151
+ "severity_hint": "Critical",
152
+ "notes": "OAuth implicit flow with malicious redirect_uri - token in URL fragment",
153
+ "category": "Auth"
154
+ },
155
+ {
156
+ "id": "AUTH-OAUTH-051",
157
+ "payload": "scope=read write admin delete",
158
+ "tags": [
159
+ "scope-escalation",
160
+ "privilege",
161
+ "quick",
162
+ "high"
163
+ ],
164
+ "expected_block": false,
165
+ "severity_hint": "High",
166
+ "notes": "OAuth with escalated scope including 'admin' - privilege escalation",
167
+ "category": "Auth"
168
+ },
169
+ {
170
+ "id": "AUTH-OAUTH-052",
171
+ "payload": "scope=* openid profile email",
172
+ "tags": [
173
+ "scope-escalation",
174
+ "wildcard",
175
+ "high"
176
+ ],
177
+ "expected_block": false,
178
+ "severity_hint": "High",
179
+ "notes": "OAuth with wildcard scope - requesting all permissions",
180
+ "category": "Auth"
181
+ },
182
+ {
183
+ "id": "AUTH-OAUTH-053",
184
+ "payload": "client_id=legitimate_client&client_secret=",
185
+ "tags": [
186
+ "client-credentials",
187
+ "empty-secret",
188
+ "critical"
189
+ ],
190
+ "expected_block": false,
191
+ "severity_hint": "Critical",
192
+ "notes": "OAuth token request with empty client_secret - weak authentication",
193
+ "category": "Auth"
194
+ },
195
+ {
196
+ "id": "AUTH-OAUTH-054",
197
+ "payload": "client_id=PUBLIC_CLIENT&code=AUTH_CODE",
198
+ "tags": [
199
+ "client-impersonation",
200
+ "public-client",
201
+ "high"
202
+ ],
203
+ "expected_block": false,
204
+ "severity_hint": "High",
205
+ "notes": "OAuth token exchange using public client_id - client impersonation",
206
+ "category": "Auth"
207
+ },
208
+ {
209
+ "id": "AUTH-OAUTH-055",
210
+ "payload": "code_verifier=",
211
+ "tags": [
212
+ "pkce",
213
+ "empty-verifier",
214
+ "quick",
215
+ "high"
216
+ ],
217
+ "expected_block": false,
218
+ "severity_hint": "High",
219
+ "notes": "OAuth PKCE with empty code_verifier - PKCE bypass attempt",
220
+ "category": "Auth"
221
+ },
222
+ {
223
+ "id": "AUTH-OAUTH-056",
224
+ "payload": "code_challenge=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
225
+ "tags": [
226
+ "pkce",
227
+ "weak-challenge",
228
+ "high"
229
+ ],
230
+ "expected_block": false,
231
+ "severity_hint": "High",
232
+ "notes": "OAuth PKCE with predictable code_challenge - weak PKCE implementation",
233
+ "category": "Auth"
234
+ },
235
+ {
236
+ "id": "AUTH-OAUTH-057",
237
+ "payload": "code_challenge_method=plain&code_challenge=simple_secret",
238
+ "tags": [
239
+ "pkce",
240
+ "plain-method",
241
+ "high"
242
+ ],
243
+ "expected_block": false,
244
+ "severity_hint": "High",
245
+ "notes": "OAuth PKCE with 'plain' method - no hashing, verifier exposed in authorize request",
246
+ "category": "Auth"
247
+ },
248
+ {
249
+ "id": "AUTH-OAUTH-058",
250
+ "payload": "grant_type=password&username=admin&password=password123",
251
+ "tags": [
252
+ "resource-owner",
253
+ "password-flow",
254
+ "quick",
255
+ "critical"
256
+ ],
257
+ "expected_block": false,
258
+ "severity_hint": "Critical",
259
+ "notes": "OAuth Resource Owner Password Credentials flow - deprecated, credentials exposed",
260
+ "category": "Auth"
261
+ },
262
+ {
263
+ "id": "AUTH-OAUTH-059",
264
+ "payload": "grant_type=client_credentials&scope=admin",
265
+ "tags": [
266
+ "client-credentials",
267
+ "scope-escalation",
268
+ "high"
269
+ ],
270
+ "expected_block": false,
271
+ "severity_hint": "High",
272
+ "notes": "OAuth client credentials with admin scope - machine-to-machine privilege escalation",
273
+ "category": "Auth"
274
+ },
275
+ {
276
+ "id": "AUTH-OAUTH-060",
277
+ "payload": "grant_type=refresh_token&refresh_token=OLD_REFRESH_TOKEN",
278
+ "tags": [
279
+ "refresh-token",
280
+ "token-reuse",
281
+ "high"
282
+ ],
283
+ "expected_block": false,
284
+ "severity_hint": "High",
285
+ "notes": "OAuth refresh token reuse - testing token rotation enforcement",
286
+ "category": "Auth"
287
+ },
288
+ {
289
+ "id": "AUTH-OAUTH-061",
290
+ "payload": "redirect_uri=https://legitimate.com%0d%0aHost: attacker.com",
291
+ "tags": [
292
+ "redirect-uri",
293
+ "crlf-injection",
294
+ "critical"
295
+ ],
296
+ "expected_block": true,
297
+ "severity_hint": "Critical",
298
+ "notes": "OAuth redirect_uri with CRLF injection - HTTP response splitting",
299
+ "category": "Auth"
300
+ },
301
+ {
302
+ "id": "AUTH-OAUTH-062",
303
+ "payload": "redirect_uri=https://legitimate.com\\@attacker.com",
304
+ "tags": [
305
+ "redirect-uri",
306
+ "backslash-trick",
307
+ "critical"
308
+ ],
309
+ "expected_block": true,
310
+ "severity_hint": "Critical",
311
+ "notes": "OAuth redirect_uri with backslash - Windows path parsing confusion",
312
+ "category": "Auth"
313
+ },
314
+ {
315
+ "id": "AUTH-OAUTH-063",
316
+ "payload": "redirect_uri=https://legitimate.com#@attacker.com/callback",
317
+ "tags": [
318
+ "redirect-uri",
319
+ "fragment-confusion",
320
+ "high"
321
+ ],
322
+ "expected_block": true,
323
+ "severity_hint": "High",
324
+ "notes": "OAuth redirect_uri with # and @ - fragment parsing bypass",
325
+ "category": "Auth"
326
+ },
327
+ {
328
+ "id": "AUTH-OAUTH-064",
329
+ "payload": "redirect_uri=https://legitimate.com/../callback",
330
+ "tags": [
331
+ "redirect-uri",
332
+ "path-normalization",
333
+ "high"
334
+ ],
335
+ "expected_block": false,
336
+ "severity_hint": "High",
337
+ "notes": "OAuth redirect_uri with relative path - normalization bypass attempt",
338
+ "category": "Auth"
339
+ },
340
+ {
341
+ "id": "AUTH-OAUTH-065",
342
+ "payload": "nonce=",
343
+ "tags": [
344
+ "nonce",
345
+ "replay",
346
+ "quick",
347
+ "high"
348
+ ],
349
+ "expected_block": false,
350
+ "severity_hint": "High",
351
+ "notes": "OAuth/OIDC with empty nonce - replay attack protection bypass",
352
+ "category": "Auth"
353
+ },
354
+ {
355
+ "id": "AUTH-OAUTH-066",
356
+ "payload": "id_token_hint=eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9.",
357
+ "tags": [
358
+ "oidc",
359
+ "id-token-hint",
360
+ "algorithm-confusion",
361
+ "critical"
362
+ ],
363
+ "expected_block": true,
364
+ "severity_hint": "Critical",
365
+ "notes": "OIDC id_token_hint with 'none' algorithm - logout endpoint manipulation",
366
+ "category": "Auth"
367
+ },
368
+ {
369
+ "id": "AUTH-OAUTH-067",
370
+ "payload": "prompt=none&login_hint=admin@company.com",
371
+ "tags": [
372
+ "oidc",
373
+ "prompt-none",
374
+ "session-hijack",
375
+ "high"
376
+ ],
377
+ "expected_block": false,
378
+ "severity_hint": "High",
379
+ "notes": "OIDC prompt=none with login_hint - silent authentication hijacking",
380
+ "category": "Auth"
381
+ },
382
+ {
383
+ "id": "AUTH-OAUTH-068",
384
+ "payload": "acr_values=urn:mace:incommon:iap:silver urn:mace:incommon:iap:bronze",
385
+ "tags": [
386
+ "oidc",
387
+ "acr-downgrade",
388
+ "medium"
389
+ ],
390
+ "expected_block": false,
391
+ "severity_hint": "Medium",
392
+ "notes": "OIDC with multiple acr_values - authentication context downgrade",
393
+ "category": "Auth"
394
+ },
395
+ {
396
+ "id": "AUTH-OAUTH-069",
397
+ "payload": "response_mode=form_post&redirect_uri=https://attacker.com",
398
+ "tags": [
399
+ "response-mode",
400
+ "form-post",
401
+ "critical"
402
+ ],
403
+ "expected_block": true,
404
+ "severity_hint": "Critical",
405
+ "notes": "OAuth response_mode=form_post to attacker domain - credential theft via auto-submit form",
406
+ "category": "Auth"
407
+ },
408
+ {
409
+ "id": "AUTH-OAUTH-070",
410
+ "payload": "response_type=code token&redirect_uri=https://attacker.com",
411
+ "tags": [
412
+ "hybrid-flow",
413
+ "token-leakage",
414
+ "critical"
415
+ ],
416
+ "expected_block": true,
417
+ "severity_hint": "Critical",
418
+ "notes": "OAuth hybrid flow with attacker redirect - both code and token leaked",
419
+ "category": "Auth"
420
+ }
421
+ ]