@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,204 @@
1
+ # WAFtester CRS Tuning Override Configuration
2
+ # Fine-tunes scanning for environments running ModSecurity with OWASP CRS
3
+ # Adjusts payloads and expectations based on CRS paranoia levels
4
+
5
+ overrides:
6
+ - id: crs-pl1-baseline
7
+ description: "Adjust expectations for CRS Paranoia Level 1 (baseline rules)"
8
+ match:
9
+ waf: "modsecurity"
10
+ paranoia_level: 1
11
+ action:
12
+ expected_block_rate: 60.0
13
+ skip_tags:
14
+ - "evasion-advanced"
15
+ - "encoding-multi"
16
+ - "unicode-bypass"
17
+ enabled: true
18
+ priority: 100
19
+
20
+ - id: crs-pl2-standard
21
+ description: "Adjust expectations for CRS Paranoia Level 2 (additional rules)"
22
+ match:
23
+ waf: "modsecurity"
24
+ paranoia_level: 2
25
+ action:
26
+ expected_block_rate: 80.0
27
+ skip_tags:
28
+ - "evasion-exotic"
29
+ enabled: true
30
+ priority: 100
31
+
32
+ - id: crs-pl3-strict
33
+ description: "Adjust expectations for CRS Paranoia Level 3 (more rules, more FPs)"
34
+ match:
35
+ waf: "modsecurity"
36
+ paranoia_level: 3
37
+ action:
38
+ expected_block_rate: 92.0
39
+ false_positive_tolerance: 8.0
40
+ enabled: true
41
+ priority: 100
42
+
43
+ - id: crs-pl4-paranoid
44
+ description: "Adjust expectations for CRS Paranoia Level 4 (maximum protection)"
45
+ match:
46
+ waf: "modsecurity"
47
+ paranoia_level: 4
48
+ action:
49
+ expected_block_rate: 98.0
50
+ false_positive_tolerance: 15.0
51
+ enabled: true
52
+ priority: 100
53
+
54
+ - id: crs-sqli-rules
55
+ description: "Tune SQLi testing for CRS rule IDs 942xxx"
56
+ match:
57
+ waf: "modsecurity"
58
+ category: "sqli"
59
+ action:
60
+ expect_rule_ids:
61
+ - "942100"
62
+ - "942110"
63
+ - "942120"
64
+ - "942130"
65
+ - "942140"
66
+ - "942150"
67
+ - "942160"
68
+ - "942170"
69
+ - "942180"
70
+ - "942190"
71
+ - "942200"
72
+ - "942210"
73
+ - "942220"
74
+ - "942230"
75
+ - "942240"
76
+ - "942250"
77
+ - "942260"
78
+ - "942270"
79
+ - "942280"
80
+ - "942290"
81
+ - "942300"
82
+ - "942310"
83
+ - "942320"
84
+ - "942330"
85
+ - "942340"
86
+ - "942350"
87
+ - "942360"
88
+ - "942370"
89
+ - "942380"
90
+ - "942390"
91
+ - "942400"
92
+ - "942410"
93
+ - "942420"
94
+ - "942430"
95
+ - "942440"
96
+ - "942450"
97
+ - "942460"
98
+ - "942470"
99
+ - "942480"
100
+ - "942490"
101
+ - "942500"
102
+ - "942510"
103
+ match_header: "x-modsecurity-rule-id"
104
+ enabled: true
105
+ priority: 80
106
+
107
+ - id: crs-xss-rules
108
+ description: "Tune XSS testing for CRS rule IDs 941xxx"
109
+ match:
110
+ waf: "modsecurity"
111
+ category: "xss"
112
+ action:
113
+ expect_rule_ids:
114
+ - "941100"
115
+ - "941110"
116
+ - "941120"
117
+ - "941130"
118
+ - "941140"
119
+ - "941150"
120
+ - "941160"
121
+ - "941170"
122
+ - "941180"
123
+ - "941190"
124
+ - "941200"
125
+ - "941210"
126
+ - "941220"
127
+ - "941230"
128
+ - "941240"
129
+ - "941250"
130
+ - "941260"
131
+ - "941270"
132
+ - "941280"
133
+ - "941290"
134
+ - "941300"
135
+ - "941310"
136
+ - "941320"
137
+ - "941330"
138
+ - "941340"
139
+ - "941350"
140
+ - "941360"
141
+ - "941370"
142
+ - "941380"
143
+ match_header: "x-modsecurity-rule-id"
144
+ enabled: true
145
+ priority: 80
146
+
147
+ - id: crs-rce-rules
148
+ description: "Tune RCE testing for CRS rule IDs 932xxx"
149
+ match:
150
+ waf: "modsecurity"
151
+ category: "rce"
152
+ action:
153
+ expect_rule_ids:
154
+ - "932100"
155
+ - "932105"
156
+ - "932110"
157
+ - "932115"
158
+ - "932120"
159
+ - "932130"
160
+ - "932140"
161
+ - "932150"
162
+ - "932160"
163
+ - "932170"
164
+ - "932171"
165
+ - "932180"
166
+ - "932190"
167
+ - "932200"
168
+ match_header: "x-modsecurity-rule-id"
169
+ enabled: true
170
+ priority: 80
171
+
172
+ - id: crs-anomaly-scoring
173
+ description: "Account for CRS anomaly scoring mode vs traditional mode"
174
+ match:
175
+ waf: "modsecurity"
176
+ action:
177
+ anomaly_threshold: 5
178
+ check_anomaly_score: true
179
+ anomaly_header: "x-modsecurity-anomaly-score"
180
+ enabled: true
181
+ priority: 70
182
+
183
+ - id: crs-block-indicators
184
+ description: "Recognize CRS-specific block response patterns"
185
+ match:
186
+ waf: "modsecurity"
187
+ action:
188
+ block_indicators:
189
+ status_codes:
190
+ - 403
191
+ - 406
192
+ - 418
193
+ - 429
194
+ - 503
195
+ body_patterns:
196
+ - "ModSecurity"
197
+ - "Access Denied"
198
+ - "Not Acceptable"
199
+ - "SecRule"
200
+ headers:
201
+ - "mod_security"
202
+ - "OWASP_CRS"
203
+ enabled: true
204
+ priority: 60
@@ -0,0 +1,159 @@
1
+ # WAFtester False Positive Suppression Override Configuration
2
+ # Rules to suppress known false positives and reduce noise in scan results
3
+ # Use this to tune results after initial baseline assessment
4
+
5
+ overrides:
6
+ - id: suppress-static-assets
7
+ description: "Skip testing on static asset paths (CSS, JS, images, fonts)"
8
+ match:
9
+ path: "\\.(css|js|png|jpg|jpeg|gif|svg|ico|woff2?|ttf|eot|map)$"
10
+ action:
11
+ skip: true
12
+ enabled: true
13
+ priority: 100
14
+
15
+ - id: suppress-favicon
16
+ description: "Skip favicon.ico — most WAFs do not inspect this"
17
+ match:
18
+ path: "/favicon\\.ico$"
19
+ action:
20
+ skip: true
21
+ enabled: true
22
+ priority: 100
23
+
24
+ - id: suppress-robots-txt
25
+ description: "Skip robots.txt probing — not an attack surface"
26
+ match:
27
+ path: "/robots\\.txt$"
28
+ action:
29
+ skip: true
30
+ enabled: true
31
+ priority: 100
32
+
33
+ - id: suppress-healthcheck
34
+ description: "Skip health check and status endpoints"
35
+ match:
36
+ path: "/(health|healthz|health-check|status|ping|readyz|livez|ready|alive)$"
37
+ action:
38
+ skip: true
39
+ enabled: true
40
+ priority: 95
41
+
42
+ - id: suppress-metrics
43
+ description: "Skip metrics and monitoring endpoints"
44
+ match:
45
+ path: "/(metrics|prometheus|_monitoring|debug/vars|debug/pprof)$"
46
+ action:
47
+ skip: true
48
+ enabled: true
49
+ priority: 95
50
+
51
+ - id: suppress-common-fp-sqli
52
+ description: "Suppress SQLi false positives from natural language with SQL-like words"
53
+ match:
54
+ category: "sqli"
55
+ false_positive_indicators:
56
+ - body_contains: "select your"
57
+ - body_contains: "union of"
58
+ - body_contains: "drop us a line"
59
+ - body_contains: "order now"
60
+ - body_contains: "insert your"
61
+ - body_contains: "update your"
62
+ - body_contains: "delete your account"
63
+ - body_contains: "from our"
64
+ - body_contains: "where we"
65
+ action:
66
+ mark_false_positive: true
67
+ confidence_reduction: 0.5
68
+ enabled: true
69
+ priority: 80
70
+
71
+ - id: suppress-common-fp-xss
72
+ description: "Suppress XSS false positives from legitimate HTML-like content"
73
+ match:
74
+ category: "xss"
75
+ false_positive_indicators:
76
+ - body_contains: "<script src="
77
+ - body_contains: "onclick="
78
+ - body_contains: "onload="
79
+ - header_contains: "text/html"
80
+ action:
81
+ mark_false_positive: true
82
+ confidence_reduction: 0.3
83
+ enabled: true
84
+ priority: 80
85
+
86
+ - id: suppress-404-as-block
87
+ description: "Do not count 404 Not Found as WAF blocking unless confirmed"
88
+ match:
89
+ response_code: 404
90
+ action:
91
+ reclassify: "not_found"
92
+ block_confidence: 0.1
93
+ enabled: true
94
+ priority: 75
95
+
96
+ - id: suppress-redirect-as-block
97
+ description: "Do not count 301/302 redirects as WAF blocking"
98
+ match:
99
+ response_code:
100
+ - 301
101
+ - 302
102
+ - 307
103
+ - 308
104
+ action:
105
+ reclassify: "redirect"
106
+ block_confidence: 0.05
107
+ enabled: true
108
+ priority: 75
109
+
110
+ - id: suppress-rate-limit-as-block
111
+ description: "Distinguish rate limiting (429) from WAF blocking"
112
+ match:
113
+ response_code: 429
114
+ action:
115
+ reclassify: "rate_limited"
116
+ block_confidence: 0.3
117
+ enabled: true
118
+ priority: 70
119
+
120
+ - id: suppress-cdn-errors
121
+ description: "Filter out CDN-level errors that are not WAF blocks"
122
+ match:
123
+ response_code:
124
+ - 502
125
+ - 504
126
+ body_patterns:
127
+ - "Bad Gateway"
128
+ - "Gateway Timeout"
129
+ - "upstream connect error"
130
+ action:
131
+ reclassify: "infrastructure_error"
132
+ block_confidence: 0.0
133
+ enabled: true
134
+ priority: 70
135
+
136
+ - id: suppress-captcha-soft-block
137
+ description: "Treat CAPTCHA challenges as soft blocks, not hard blocks"
138
+ match:
139
+ body_patterns:
140
+ - "captcha"
141
+ - "recaptcha"
142
+ - "hCaptcha"
143
+ - "challenge-platform"
144
+ - "turnstile"
145
+ action:
146
+ reclassify: "captcha_challenge"
147
+ block_confidence: 0.7
148
+ enabled: true
149
+ priority: 65
150
+
151
+ - id: suppress-timeout-false-positive
152
+ description: "Do not count request timeouts as bypasses"
153
+ match:
154
+ timeout: true
155
+ action:
156
+ reclassify: "timeout"
157
+ bypass_confidence: 0.0
158
+ enabled: true
159
+ priority: 90
@@ -0,0 +1,152 @@
1
+ # WAFtester OWASP Top 10 Policy
2
+ # Maps directly to OWASP Top 10 2021 categories
3
+ # Ensures WAF coverage for each OWASP category
4
+
5
+ name: owasp-top10
6
+ description: "OWASP Top 10 (2021) compliance policy — validates WAF coverage for all ten risk categories"
7
+ version: "2.0.0"
8
+
9
+ severity_threshold: medium
10
+
11
+ owasp_mapping:
12
+ A01_Broken_Access_Control:
13
+ scan_types:
14
+ - idor
15
+ - cors
16
+ - open-redirect
17
+ - path-traversal
18
+ - csrf
19
+ - forced-browsing
20
+ - privilege-escalation
21
+ effectiveness_below: 85.0
22
+
23
+ A02_Cryptographic_Failures:
24
+ scan_types:
25
+ - sensitive-data
26
+ - tls
27
+ - insecure-cookies
28
+ - cleartext-credentials
29
+ effectiveness_below: 80.0
30
+
31
+ A03_Injection:
32
+ scan_types:
33
+ - sqli
34
+ - nosqli
35
+ - cmdi
36
+ - ldap
37
+ - xpath
38
+ - ssti
39
+ - crlf
40
+ - hpp
41
+ - xss
42
+ - xxe
43
+ effectiveness_below: 90.0
44
+
45
+ A04_Insecure_Design:
46
+ scan_types:
47
+ - bizlogic
48
+ - race-condition
49
+ - mass-assignment
50
+ - api-abuse
51
+ effectiveness_below: 70.0
52
+
53
+ A05_Security_Misconfiguration:
54
+ scan_types:
55
+ - misconfig
56
+ - default-creds
57
+ - directory-listing
58
+ - verbose-errors
59
+ - unnecessary-features
60
+ effectiveness_below: 80.0
61
+
62
+ A06_Vulnerable_Components:
63
+ scan_types:
64
+ - cve
65
+ - outdated-software
66
+ - known-exploit
67
+ effectiveness_below: 75.0
68
+
69
+ A07_Auth_Failures:
70
+ scan_types:
71
+ - broken-auth
72
+ - brute-force
73
+ - credential-stuffing
74
+ - session-fixation
75
+ - jwt
76
+ - oauth
77
+ effectiveness_below: 85.0
78
+
79
+ A08_Software_Data_Integrity:
80
+ scan_types:
81
+ - deserialization
82
+ - upload
83
+ - ci-cd
84
+ effectiveness_below: 85.0
85
+
86
+ A09_Logging_Monitoring:
87
+ scan_types:
88
+ - log-injection
89
+ - monitoring-bypass
90
+ effectiveness_below: 60.0
91
+
92
+ A10_SSRF:
93
+ scan_types:
94
+ - ssrf
95
+ - dns-rebinding
96
+ - cloud-metadata
97
+ effectiveness_below: 90.0
98
+
99
+ fail_on:
100
+ bypasses:
101
+ - sqli
102
+ - xss
103
+ - rce
104
+ - ssrf
105
+ - lfi
106
+ - rfi
107
+ - ssti
108
+ - xxe
109
+ - cmdi
110
+ - deserialization
111
+ - nosqli
112
+ - crlf
113
+ - ldap
114
+ - xpath
115
+ - upload
116
+ - idor
117
+ - cors
118
+ - csrf
119
+ - broken-auth
120
+ - jwt
121
+ - oauth
122
+
123
+ categories:
124
+ - injection
125
+ - broken-auth
126
+ - sensitive-data
127
+ - xxe
128
+ - broken-access
129
+ - misconfig
130
+ - xss
131
+ - deserialization
132
+ - components
133
+ - logging
134
+ - ssrf
135
+
136
+ effectiveness_below: 80.0
137
+
138
+ error_rate_above: 5.0
139
+
140
+ false_positive_rate_above: 5.0
141
+
142
+ min_tests_required: 30
143
+
144
+ max_response_time_ms: 15000
145
+
146
+ require_waf_detected: false
147
+
148
+ ignore:
149
+ ids: []
150
+ tags:
151
+ - informational
152
+ severity_below: low
@@ -0,0 +1,124 @@
1
+ # WAFtester PCI DSS Policy
2
+ # Aligned with PCI DSS v4.0 requirements for web application firewalls
3
+ # Requirement 6.4.2: Automated technical solution for public-facing web applications
4
+
5
+ name: pci-dss
6
+ description: "PCI DSS v4.0 compliance policy — validates WAF protection for cardholder data environments"
7
+ version: "2.0.0"
8
+
9
+ severity_threshold: medium
10
+
11
+ compliance:
12
+ framework: "PCI DSS"
13
+ version: "4.0"
14
+ requirements:
15
+ - id: "6.4.1"
16
+ description: "Public-facing web applications are protected against attacks"
17
+ - id: "6.4.2"
18
+ description: "Automated technical solution that detects and prevents web-based attacks"
19
+ - id: "6.2.4"
20
+ description: "Software engineering techniques prevent injection attacks"
21
+ - id: "11.6.1"
22
+ description: "Unauthorized changes to HTTP headers and payment page content are detected"
23
+
24
+ pci_controls:
25
+ injection_protection:
26
+ description: "Req 6.2.4 — Prevent common injection attacks"
27
+ scan_types:
28
+ - sqli
29
+ - nosqli
30
+ - xss
31
+ - cmdi
32
+ - ldap
33
+ - xpath
34
+ - ssti
35
+ - xxe
36
+ effectiveness_below: 90.0
37
+
38
+ authentication_protection:
39
+ description: "Req 8 — Identify and authenticate access"
40
+ scan_types:
41
+ - broken-auth
42
+ - brute-force
43
+ - credential-stuffing
44
+ - session-fixation
45
+ - jwt
46
+ effectiveness_below: 90.0
47
+
48
+ data_protection:
49
+ description: "Req 3+4 — Protect stored and transmitted data"
50
+ scan_types:
51
+ - sensitive-data
52
+ - lfi
53
+ - ssrf
54
+ - tls
55
+ effectiveness_below: 85.0
56
+
57
+ access_control:
58
+ description: "Req 7 — Restrict access by business need-to-know"
59
+ scan_types:
60
+ - idor
61
+ - cors
62
+ - csrf
63
+ - path-traversal
64
+ effectiveness_below: 85.0
65
+
66
+ change_detection:
67
+ description: "Req 11.6.1 — Detect unauthorized content/header changes"
68
+ scan_types:
69
+ - crlf
70
+ - host-header
71
+ - cache-poisoning
72
+ - request-smuggling
73
+ effectiveness_below: 85.0
74
+
75
+ fail_on:
76
+ bypasses:
77
+ - sqli
78
+ - xss
79
+ - rce
80
+ - ssrf
81
+ - lfi
82
+ - rfi
83
+ - ssti
84
+ - xxe
85
+ - cmdi
86
+ - deserialization
87
+ - nosqli
88
+ - crlf
89
+ - ldap
90
+ - xpath
91
+ - upload
92
+ - broken-auth
93
+ - session-fixation
94
+ - idor
95
+ - request-smuggling
96
+
97
+ categories:
98
+ - injection
99
+ - broken-auth
100
+ - sensitive-data
101
+ - xxe
102
+ - broken-access
103
+ - xss
104
+ - deserialization
105
+ - ssrf
106
+
107
+ effectiveness_below: 85.0
108
+
109
+ error_rate_above: 3.0
110
+
111
+ false_positive_rate_above: 3.0
112
+
113
+ min_tests_required: 40
114
+
115
+ max_response_time_ms: 10000
116
+
117
+ require_waf_detected: true
118
+
119
+ ignore:
120
+ ids: []
121
+ tags:
122
+ - informational
123
+ - recon
124
+ severity_below: low
@@ -0,0 +1,40 @@
1
+ # WAFtester Permissive Security Policy
2
+ # Relaxed policy for development and initial WAF tuning
3
+ # Only fails on critical, actively exploitable bypasses
4
+
5
+ name: permissive
6
+ description: "Relaxed development policy — only fails on critical, actively exploitable WAF bypasses"
7
+ version: "2.0.0"
8
+
9
+ severity_threshold: high
10
+
11
+ fail_on:
12
+ bypasses:
13
+ - sqli
14
+ - rce
15
+ - deserialization
16
+ - request-smuggling
17
+
18
+ categories:
19
+ - injection
20
+
21
+ effectiveness_below: 50.0
22
+
23
+ error_rate_above: 15.0
24
+
25
+ false_positive_rate_above: 10.0
26
+
27
+ min_tests_required: 5
28
+
29
+ max_response_time_ms: 30000
30
+
31
+ require_waf_detected: false
32
+
33
+ ignore:
34
+ ids: []
35
+ tags:
36
+ - informational
37
+ - recon
38
+ - evasion
39
+ - low-confidence
40
+ severity_below: medium