Header-Based Open Redirect
Description
It is also called Host Header Injection as Host Header is added in HTTP Request.
The attacker adds Host: attacker.com
and check the response's status code is either of 301/307/308, which is for redirection.
Sometime, X-Forwarded-Host: attacker.com
will give redirection to attacker.com.
Example
Let's consider normal HTTP request,
GET / HTTP/1.1
Host: somesite.com
It gives response header as,
HTTP/2 200 OK
date: Wed, 13 May 2020 14:18:47 GMT
Now, When I add Host: attacker.com
in Request Header, like
GET / HTTP/1.1
Host: attacker.com
It gives response header as,
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://attacker.com/
Connection: close
Impact
- It does not have much impact, as attackers can't add the Host header in the victim's request.
- It may lead to Open redirection with the help of Web Cache Poisoning.
Prevention
- Always validate the host header.
- Maintain Whitelist of allowed hosts.