@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,382 @@
1
+ [
2
+ {
3
+ "id": "PROTO-HTTP2-001",
4
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\n:method POST",
5
+ "tags": [
6
+ "pseudo-header",
7
+ "duplicate-method",
8
+ "quick",
9
+ "critical"
10
+ ],
11
+ "expected_block": true,
12
+ "severity_hint": "Critical",
13
+ "notes": "Duplicate :method pseudo-header (violates HTTP/2 spec)",
14
+ "destructive": false,
15
+ "category": "Protocol"
16
+ },
17
+ {
18
+ "id": "PROTO-HTTP2-002",
19
+ "payload": ":path /admin\r\n:method GET\r\n:authority example.com\r\n:scheme https",
20
+ "tags": [
21
+ "pseudo-header",
22
+ "reordering",
23
+ "quick"
24
+ ],
25
+ "expected_block": true,
26
+ "severity_hint": "High",
27
+ "notes": "Pseudo-headers not in required order (:method should be first)",
28
+ "destructive": false,
29
+ "category": "Protocol"
30
+ },
31
+ {
32
+ "id": "PROTO-HTTP2-003",
33
+ "payload": ":method GET\r\n:path /\r\nhost: example.com\r\n:authority example.com\r\n:scheme https",
34
+ "tags": [
35
+ "pseudo-header",
36
+ "after-regular",
37
+ "quick"
38
+ ],
39
+ "expected_block": true,
40
+ "severity_hint": "Critical",
41
+ "notes": "Pseudo-header after regular header (violates HTTP/2 spec)",
42
+ "destructive": false,
43
+ "category": "Protocol"
44
+ },
45
+ {
46
+ "id": "PROTO-HTTP2-004",
47
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\n:custom-header value",
48
+ "tags": [
49
+ "pseudo-header",
50
+ "custom"
51
+ ],
52
+ "expected_block": true,
53
+ "severity_hint": "High",
54
+ "notes": "Custom pseudo-header (only defined pseudo-headers are allowed)",
55
+ "destructive": false,
56
+ "category": "Protocol"
57
+ },
58
+ {
59
+ "id": "PROTO-HTTP2-005",
60
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\nhost: different.com\r\n:scheme https",
61
+ "tags": [
62
+ "host-mismatch",
63
+ "quick"
64
+ ],
65
+ "expected_block": true,
66
+ "severity_hint": "Critical",
67
+ "notes": "Host header conflicts with :authority pseudo-header",
68
+ "destructive": false,
69
+ "category": "Protocol"
70
+ },
71
+ {
72
+ "id": "PROTO-HTTP2-006",
73
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nConnection: keep-alive",
74
+ "tags": [
75
+ "forbidden-header",
76
+ "connection"
77
+ ],
78
+ "expected_block": true,
79
+ "severity_hint": "High",
80
+ "notes": "Connection header forbidden in HTTP/2",
81
+ "destructive": false,
82
+ "category": "Protocol"
83
+ },
84
+ {
85
+ "id": "PROTO-HTTP2-007",
86
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nTransfer-Encoding: chunked",
87
+ "tags": [
88
+ "forbidden-header",
89
+ "te"
90
+ ],
91
+ "expected_block": true,
92
+ "severity_hint": "Critical",
93
+ "notes": "Transfer-Encoding forbidden in HTTP/2",
94
+ "destructive": false,
95
+ "category": "Protocol"
96
+ },
97
+ {
98
+ "id": "PROTO-HTTP2-008",
99
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nUpgrade: h2c",
100
+ "tags": [
101
+ "forbidden-header",
102
+ "upgrade"
103
+ ],
104
+ "expected_block": true,
105
+ "severity_hint": "High",
106
+ "notes": "Upgrade header forbidden in HTTP/2",
107
+ "destructive": false,
108
+ "category": "Protocol"
109
+ },
110
+ {
111
+ "id": "PROTO-HTTP2-009",
112
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nKeep-Alive: timeout=5",
113
+ "tags": [
114
+ "forbidden-header",
115
+ "keep-alive"
116
+ ],
117
+ "expected_block": true,
118
+ "severity_hint": "Medium",
119
+ "notes": "Keep-Alive header forbidden in HTTP/2",
120
+ "destructive": false,
121
+ "category": "Protocol"
122
+ },
123
+ {
124
+ "id": "PROTO-HTTP2-010",
125
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nProxy-Connection: keep-alive",
126
+ "tags": [
127
+ "forbidden-header",
128
+ "proxy-connection"
129
+ ],
130
+ "expected_block": true,
131
+ "severity_hint": "Medium",
132
+ "notes": "Proxy-Connection header forbidden in HTTP/2",
133
+ "destructive": false,
134
+ "category": "Protocol"
135
+ },
136
+ {
137
+ "id": "PROTO-HTTP2-011",
138
+ "payload": ":method CONNECT\r\n:authority example.com:443",
139
+ "tags": [
140
+ "connect-method",
141
+ "tunnel"
142
+ ],
143
+ "expected_block": false,
144
+ "severity_hint": "Medium",
145
+ "notes": "Valid CONNECT method for tunneling (no :path or :scheme required)",
146
+ "destructive": false,
147
+ "category": "Protocol"
148
+ },
149
+ {
150
+ "id": "PROTO-HTTP2-012",
151
+ "payload": ":method CONNECT\r\n:path /\r\n:authority example.com:443\r\n:scheme https",
152
+ "tags": [
153
+ "connect-method",
154
+ "invalid-pseudo"
155
+ ],
156
+ "expected_block": true,
157
+ "severity_hint": "High",
158
+ "notes": "CONNECT with :path and :scheme (forbidden for CONNECT)",
159
+ "destructive": false,
160
+ "category": "Protocol"
161
+ },
162
+ {
163
+ "id": "PROTO-HTTP2-013",
164
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nTE: trailers",
165
+ "tags": [
166
+ "te-trailers"
167
+ ],
168
+ "expected_block": false,
169
+ "severity_hint": "Low",
170
+ "notes": "TE: trailers is allowed in HTTP/2 (only trailers value)",
171
+ "destructive": false,
172
+ "category": "Protocol"
173
+ },
174
+ {
175
+ "id": "PROTO-HTTP2-014",
176
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nTE: gzip",
177
+ "tags": [
178
+ "te-invalid"
179
+ ],
180
+ "expected_block": true,
181
+ "severity_hint": "High",
182
+ "notes": "TE header with value other than trailers (forbidden in HTTP/2)",
183
+ "destructive": false,
184
+ "category": "Protocol"
185
+ },
186
+ {
187
+ "id": "PROTO-HTTP2-015",
188
+ "payload": ":method GET\r\n:path /\r\n:authority \r\n:scheme https",
189
+ "tags": [
190
+ "empty-authority"
191
+ ],
192
+ "expected_block": true,
193
+ "severity_hint": "High",
194
+ "notes": "Empty :authority pseudo-header",
195
+ "destructive": false,
196
+ "category": "Protocol"
197
+ },
198
+ {
199
+ "id": "PROTO-HTTP2-016",
200
+ "payload": ":method GET\r\n:path \r\n:authority example.com\r\n:scheme https",
201
+ "tags": [
202
+ "empty-path"
203
+ ],
204
+ "expected_block": true,
205
+ "severity_hint": "Medium",
206
+ "notes": "Empty :path pseudo-header",
207
+ "destructive": false,
208
+ "category": "Protocol"
209
+ },
210
+ {
211
+ "id": "PROTO-HTTP2-017",
212
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme ",
213
+ "tags": [
214
+ "empty-scheme"
215
+ ],
216
+ "expected_block": true,
217
+ "severity_hint": "High",
218
+ "notes": "Empty :scheme pseudo-header",
219
+ "destructive": false,
220
+ "category": "Protocol"
221
+ },
222
+ {
223
+ "id": "PROTO-HTTP2-018",
224
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme ftp",
225
+ "tags": [
226
+ "invalid-scheme"
227
+ ],
228
+ "expected_block": true,
229
+ "severity_hint": "High",
230
+ "notes": "Invalid scheme (should be http or https)",
231
+ "destructive": false,
232
+ "category": "Protocol"
233
+ },
234
+ {
235
+ "id": "PROTO-HTTP2-019",
236
+ "payload": ":method GET\r\n:path /../etc/passwd\r\n:authority example.com\r\n:scheme https",
237
+ "tags": [
238
+ "path-traversal",
239
+ "quick"
240
+ ],
241
+ "expected_block": true,
242
+ "severity_hint": "Critical",
243
+ "notes": "Path traversal attempt in :path pseudo-header",
244
+ "destructive": false,
245
+ "category": "Protocol"
246
+ },
247
+ {
248
+ "id": "PROTO-HTTP2-020",
249
+ "payload": ":method GET\r\n:path /\\..\\..\\windows\\system32\r\n:authority example.com\r\n:scheme https",
250
+ "tags": [
251
+ "path-traversal",
252
+ "windows"
253
+ ],
254
+ "expected_block": true,
255
+ "severity_hint": "Critical",
256
+ "notes": "Windows path traversal in :path pseudo-header",
257
+ "destructive": false,
258
+ "category": "Protocol"
259
+ },
260
+ {
261
+ "id": "PROTO-HTTP2-021",
262
+ "payload": ":method GET\r\n:path //etc/passwd\r\n:authority example.com\r\n:scheme https",
263
+ "tags": [
264
+ "double-slash"
265
+ ],
266
+ "expected_block": true,
267
+ "severity_hint": "High",
268
+ "notes": "Double slash path anomaly",
269
+ "destructive": false,
270
+ "category": "Protocol"
271
+ },
272
+ {
273
+ "id": "PROTO-HTTP2-022",
274
+ "payload": ":method GET\r\n:path /admin\r\n:authority 127.0.0.1\r\n:scheme https",
275
+ "tags": [
276
+ "localhost-authority"
277
+ ],
278
+ "expected_block": true,
279
+ "severity_hint": "Critical",
280
+ "notes": "Localhost in :authority (potential SSRF)",
281
+ "destructive": false,
282
+ "category": "Protocol"
283
+ },
284
+ {
285
+ "id": "PROTO-HTTP2-023",
286
+ "payload": ":method GET\r\n:path /\r\n:authority 169.254.169.254\r\n:scheme http",
287
+ "tags": [
288
+ "imds-authority",
289
+ "quick"
290
+ ],
291
+ "expected_block": true,
292
+ "severity_hint": "Critical",
293
+ "notes": "AWS IMDS IP in :authority (SSRF attempt)",
294
+ "destructive": false,
295
+ "category": "Protocol"
296
+ },
297
+ {
298
+ "id": "PROTO-HTTP2-024",
299
+ "payload": ":method GET\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nContent-Length: 0",
300
+ "tags": [
301
+ "cl-with-get"
302
+ ],
303
+ "expected_block": true,
304
+ "severity_hint": "Medium",
305
+ "notes": "Content-Length on GET request in HTTP/2",
306
+ "destructive": false,
307
+ "category": "Protocol"
308
+ },
309
+ {
310
+ "id": "PROTO-HTTP2-025",
311
+ "payload": ":method POST\r\n:path /\r\n:authority example.com\r\n:scheme https\r\nContent-Length: 10\r\nContent-Length: 20",
312
+ "tags": [
313
+ "duplicate-cl"
314
+ ],
315
+ "expected_block": true,
316
+ "severity_hint": "Critical",
317
+ "notes": "Duplicate Content-Length headers in HTTP/2",
318
+ "destructive": false,
319
+ "category": "Protocol"
320
+ },
321
+ {
322
+ "id": "PROTO-HTTP2-026",
323
+ "payload": ":method GET\r\n:path /\r\n:authority example.com:80\r\n:scheme https",
324
+ "tags": [
325
+ "port-scheme-mismatch"
326
+ ],
327
+ "expected_block": true,
328
+ "severity_hint": "High",
329
+ "notes": "Port 80 with https scheme (port/scheme mismatch)",
330
+ "destructive": false,
331
+ "category": "Protocol"
332
+ },
333
+ {
334
+ "id": "PROTO-HTTP2-027",
335
+ "payload": ":method GET\r\n:path /\r\n:authority example.com:443\r\n:scheme http",
336
+ "tags": [
337
+ "port-scheme-mismatch"
338
+ ],
339
+ "expected_block": true,
340
+ "severity_hint": "High",
341
+ "notes": "Port 443 with http scheme (port/scheme mismatch)",
342
+ "destructive": false,
343
+ "category": "Protocol"
344
+ },
345
+ {
346
+ "id": "PROTO-HTTP2-028",
347
+ "payload": ":method GET\r\n:path /\r\n:authority example.com@attacker.com\r\n:scheme https",
348
+ "tags": [
349
+ "authority-injection"
350
+ ],
351
+ "expected_block": true,
352
+ "severity_hint": "Critical",
353
+ "notes": "Credential injection in :authority pseudo-header",
354
+ "destructive": false,
355
+ "category": "Protocol"
356
+ },
357
+ {
358
+ "id": "PROTO-HTTP2-029",
359
+ "payload": "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n",
360
+ "tags": [
361
+ "connection-preface",
362
+ "downgrade"
363
+ ],
364
+ "expected_block": false,
365
+ "severity_hint": "Low",
366
+ "notes": "Valid HTTP/2 connection preface",
367
+ "destructive": false,
368
+ "category": "Protocol"
369
+ },
370
+ {
371
+ "id": "PROTO-HTTP2-030",
372
+ "payload": "PRI * HTTP/2.0\r\n\r\nXX\r\n\r\n",
373
+ "tags": [
374
+ "invalid-preface"
375
+ ],
376
+ "expected_block": true,
377
+ "severity_hint": "High",
378
+ "notes": "Invalid HTTP/2 connection preface (XX instead of SM)",
379
+ "destructive": false,
380
+ "category": "Protocol"
381
+ }
382
+ ]