WAF bypass
TL;DR: WAFs are signature/score engines on a normalised view of the request; bypass the normaliser, change the encoding, split the payload, or hide it behind something the WAF won’t parse.
What it is
A Web Application Firewall (Cloudflare, Akamai, F5/ASM, AWS WAF, Imperva, ModSecurity + CRS) inspects requests against rule sets. Bypasses target one of four surfaces: the normaliser (how the WAF parses the request), the rule set (what patterns it matches), the path (whether the WAF sees the request at all), or the scoring (anomaly-score thresholds and exclusions).
Preconditions / where it applies
- A WAF in front of a vulnerable application — the underlying bug must exist; this is about delivery.
- You can adjust headers, body, encoding, transport (HTTP/1.1 vs H2), and timing.
- Sometimes the origin IP leaks (DNS history, certificate transparency, misconfigured subdomain) — then you just skip the WAF entirely.
Technique
- Find the origin. Skip the WAF by reaching the origin directly. Sources: securitytrails.com, crt.sh, archived A records, cloud reverse DNS, virtual-host probing.
- Encoding tricks.
- URL-encode special chars (
%27for'), then double-encode (%2527). Some WAFs decode once, the app twice. - Unicode/IDN equivalents in payloads (
<scrıpt>in some parsers). - Mixed case, NULL byte (
%00),
- URL-encode special chars (