Web Application Firewalls (WAFs) are commonly used to filter and monitor HTTP traffic to protect web applications from attacks. However, attackers can bypass WAFs by manipulating HTTP headers. One such attack involves Password Reset Poisoning, where an attacker leverages forged headers to manipulate the behavior of the application, particularly in password reset functionalities.
This document outlines techniques to bypass WAFs using custom headers, including examples of how they can be used in password reset poisoning and other similar attacks.
How Does WAF Header Manipulation Work?
Many web applications rely on HTTP headers to determine a user's origin, session, or intended destination. By modifying these headers, an attacker can:
Trick the application into believing the request is coming from a trusted source.
Redirect password reset links to an attacker's domain.
Bypass security measures by manipulating X-Forwarded-For, Referer, or Origin headers.
Spoof a legitimate user by injecting headers used for authentication.
Some applications also have misconfigured reverse proxies, which trust certain headers to determine the client’s IP address, allowing internal access through header manipulation.
Common Headers Used for WAF Bypass
Below are the most commonly used headers for WAF bypass and server-side manipulation: