Open Redirect: Anwendung, typische Fehler, Praxiswissen und saubere Workflows
Open Redirect korrekt einordnen: Schwachstelle, Missbrauchspfad und reale Relevanz
Open Redirect wirkt auf den ersten Blick oft harmlos. Technisch betrachtet akzeptiert eine Anwendung einen vom Nutzer kontrollierten Zielwert und leitet den Browser dorthin weiter. Das kann über Parameter wie next, url, redirect, returnTo, continue oder über versteckte Formularfelder, Header oder clientseitige Logik passieren. Die eigentliche Schwachstelle liegt nicht in der Weiterleitung selbst, sondern darin, dass die Anwendung fremde Ziele ohne ausreichende Validierung oder Bindung an vertrauenswürdige Pfade übernimmt.
In realen Assessments ist Open Redirect selten ein isoliertes Problem. Die Schwachstelle wird häufig als Baustein in größeren Angriffsketten relevant: Phishing über vertrauenswürdige Domains, Umgehung von Redirect-Whitelists in OAuth-Flows, Missbrauch in SSO-Prozessen, Token-Leaks über unsaubere Übergaben, Cache- oder Log-Vergiftung und in manchen Fällen Unterstützung für SSRF-nahe Szenarien, wenn Backend-Komponenten Redirects automatisch folgen. Wer nur auf den HTTP-Statuscode 302 schaut, übersieht den eigentlichen Kontext.
Ein sauberer Test beginnt deshalb nicht mit Payload-Listen, sondern mit der Frage: Woher kommt der Redirect-Wert, wer kontrolliert ihn, wann wird er ausgewertet und welche Sicherheitsannahme hängt daran? Genau an dieser Stelle helfen Proxy, Proxy History und Repeater. Damit lässt sich nachvollziehen, ob die Weiterleitung serverseitig, clientseitig oder in einer gemischten Kette entsteht.
Typische Quellen für Open Redirects sind Login-Flows, Logout-Endpunkte, Passwort-Reset-Prozesse, Registrierungsstrecken, Consent-Seiten, Marketing-Tracking, Download-Portale und API-Endpunkte, die nach erfolgreicher Aktion auf eine Zielseite zurückspringen. Besonders häufig taucht das Problem dort auf, wo Entwickler Benutzerfreundlichkeit über Sicherheit priorisieren und Rücksprungziele dynamisch halten wollen.
Die Schwere hängt stark vom Anwendungskontext ab. Ein Redirect auf einer statischen Marketing-Seite ohne Authentifizierungsbezug ist anders zu bewerten als ein Redirect in einem OAuth-Callback, in einem SAML-Flow oder direkt nach einer Passwortänderung. In professionellen Berichten zählt deshalb nicht nur der Nachweis, dass eine Weiterleitung möglich ist, sondern auch, welche Sicherheitsgrenzen dadurch unterlaufen werden.
Für die praktische Arbeit ist wichtig: Nicht jede externe Weiterleitung ist automatisch verwundbar. Viele Anwendungen erlauben bewusst den Sprung zu Partnerdomains, CDN-Zielen oder Subsystemen. Entscheidend ist, ob diese Ziele kontrolliert, eingeschränkt und nachvollziehbar sind. Ein Redirect auf eine fest definierte Domain mit strikter Pfadvalidierung ist etwas anderes als ein frei manipulierbarer Parameter, der beliebige Schemes oder Hostnamen akzeptiert.
Angriffsoberfläche systematisch finden: Wo Redirects in Anwendungen wirklich entstehen
Die Suche nach Open Redirects ist dann effizient, wenn sie entlang typischer Navigations- und Zustandswechsel erfolgt. Statt blind Parameter zu fuzzing, wird zuerst die Anwendung kartiert. Besonders ergiebig sind Requests, die nach erfolgreicher Aktion einen Ortswechsel auslösen. Dazu gehören Login, Logout, Registrierung, E-Mail-Bestätigung, Passwort-Reset, Profiländerungen, Checkout-Schritte und Consent-Dialoge.
Im ersten Schritt wird der Traffic mit Proxy Intercept oder passiv über die Historie gesammelt. Danach werden Parameter identifiziert, die semantisch nach Navigation klingen. Neben offensichtlichen Namen wie redirect oder returnUrl sind auch generische Felder relevant, etwa state, data, target, path, destination oder Base64-kodierte Werte. Gerade in modernen Frontends werden Redirect-Ziele oft serialisiert, URL-kodiert oder in JSON-Strukturen eingebettet.
Ein häufiger Fehler in Tests besteht darin, nur Query-Parameter zu betrachten. Redirects können auch in POST-Bodies, Cookies, Local-Storage-Werten, HTML-Formularen, JavaScript-Variablen, Meta-Refresh-Tags oder Response-Headern entstehen. In Single-Page-Applications wird die Weiterleitung oft clientseitig aus API-Antworten zusammengesetzt. Dann ist kein klassischer 302 sichtbar, obwohl die Schwachstelle funktional identisch ist.
- Suche nach Parametern mit Navigationsbezug in Query, Body, JSON und Cookies.
- Prüfe sowohl serverseitige 3xx-Antworten als auch clientseitige Weiterleitungen per JavaScript oder Meta-Refresh.
- Beobachte Zustandswechsel nach Authentifizierung, Logout, Consent, Reset und Zahlungsprozessen.
Ein weiterer ergiebiger Bereich sind Deep Links und mobile Übergaben. Manche Anwendungen akzeptieren benutzerdefinierte Schemes oder App-Links wie myapp:// oder intent://. Wenn solche Ziele ungeprüft übernommen werden, kann das nicht nur zu Phishing, sondern auch zu App-spezifischen Missbrauchsszenarien führen. Ebenso relevant sind Protokoll-relative Ziele wie //evil.example, die von vielen Filtern übersehen werden, obwohl sie im Browser zu einer externen Domain aufgelöst werden.
In Burp ist es sinnvoll, verdächtige Requests direkt an Repeater Anleitung zu übergeben und dort Varianten systematisch gegeneinander zu testen. Bei größeren Anwendungen kann zusätzlich Target Tab mit sauber gesetztem Scope helfen, um nur relevante Hosts und Pfade zu betrachten. Das reduziert Rauschen und verhindert, dass harmlose externe Links mit echten Redirect-Schwachstellen verwechselt werden.
Wer Open Redirects zuverlässig finden will, muss außerdem verstehen, wie Frameworks und Reverse Proxies Redirects erzeugen. Manche Anwendungen setzen den Location-Header direkt, andere nutzen Framework-Helfer, die relative Pfade normalisieren. Wieder andere bauen Ziele aus Headern wie Host oder X-Forwarded-Host. Dadurch entstehen Sonderfälle, bei denen kein klassischer Redirect-Parameter existiert, die Weiterleitung aber trotzdem durch Nutzereingaben beeinflusst wird.
Mit Burp Suite sauber testen: Repeater, Proxy und Vergleich statt blindem Payload-Werfen
Der Kern eines guten Redirect-Tests ist Vergleichbarkeit. Zuerst wird ein legitimer Request mit gültigem Rücksprungziel aufgenommen. Danach wird genau dieser Request in kleinen Schritten verändert. So lässt sich erkennen, welche Normalisierung, Filterung oder Blockade tatsächlich greift. Ein chaotischer Test mit zehn Payloads gleichzeitig liefert selten belastbare Ergebnisse.
Ein typischer Ausgangspunkt sieht so aus:
GET /login?next=/account HTTP/1.1
Host: app.example.com
Cookie: session=abc123
Im Repeater wird daraus zunächst eine harmlose externe Variante:
GET /login?next=https://evil.example HTTP/1.1
Host: app.example.com
Cookie: session=abc123
Wird daraufhin ein 302 Found mit Location: https://evil.example geliefert, ist der Nachweis trivial. In der Praxis sind die interessanten Fälle aber die scheinbar blockierten Varianten. Dann wird geprüft, ob die Anwendung nur auf einfache Muster filtert und sich durch alternative Schreibweisen umgehen lässt. Dazu gehören URL-kodierte Zeichen, doppelte Kodierung, Backslashes, Protokoll-relative Schreibweisen, eingebettete Credentials, Groß-/Kleinschreibung, Unicode-Varianten oder relative Pfade mit Host-Interpretation.
Ein sauberer Workflow in Repeater Parameter Testen besteht darin, pro Request nur eine Eigenschaft zu ändern: erst Schema, dann Host, dann Pfad, dann Kodierung. So wird sichtbar, ob die Anwendung auf String-Matching, URL-Parsing oder nachgelagerte Browser-Normalisierung hereinfällt. Für direkte Response-Vergleiche ist Comparer nützlich, besonders wenn Unterschiede nur in Headern oder minimalen Redirect-Zielen liegen.
Beispiel für typische Testvarianten:
/login?next=//evil.example
/login?next=https:%2f%2fevil.example
/login?next=%2f%2fevil.example
/login?next=https://trusted.example.evil.example
/login?next=https://trusted.example@evil.example
/login?next=\evil.example
/login?next=/\evil.example
/login?next=////evil.example
Viele Anwendungen validieren nur, ob ein Wert mit / beginnt. Browser und Frameworks interpretieren jedoch manche Kombinationen trotzdem als externes Ziel. Genau deshalb reicht es nicht, nur den finalen String zu lesen. Entscheidend ist, wie Server, Proxy, Browser und gegebenenfalls JavaScript den Wert nacheinander verarbeiten.
Wenn mehrere Parameter zusammenspielen, etwa returnUrl plus state oder ein signierter Wrapper, wird der Request schrittweise zerlegt. Kodierte Werte können mit Decoder analysiert werden. Bei JSON- oder Base64-Strukturen ist das oft der Unterschied zwischen oberflächlichem Test und echtem Befund. Wer Burp noch nicht sauber eingerichtet hat, sollte zuerst die Grundlagen in Erste Schritte und Workflow beherrschen, weil Redirect-Tests stark von reproduzierbaren Requests leben.
Typische Filterfehler und Bypass-Techniken: Warum einfache Validierung fast immer scheitert
Die meisten Open Redirects entstehen nicht, weil gar keine Prüfung existiert, sondern weil die Prüfung zu simpel ist. Klassische Anti-Patterns sind startsWith("/"), contains("trusted.com"), Blacklists für http:// und https:// oder reguläre Ausdrücke, die nur offensichtliche Fälle abfangen. Solche Ansätze ignorieren, dass URLs nicht nur Strings sind, sondern von Parsern normalisiert und unterschiedlich interpretiert werden.
Ein häufiger Fehler ist die Prüfung auf eine erlaubte Domain per Teilstring. Dann wird etwa https://trusted.example.evil.example akzeptiert, weil der erlaubte Hostname irgendwo enthalten ist. Ebenso problematisch sind Userinfo-Konstrukte wie https://trusted.example@evil.example. Für Menschen wirkt das auf den ersten Blick legitim, der Browser verbindet aber zu evil.example. Solche Fälle sind besonders relevant in Phishing-Szenarien.
Ein weiterer Klassiker ist die Annahme, dass relative Pfade sicher seien. Werte wie //evil.example beginnen zwar mit einem Slash, sind aber protokoll-relative absolute URLs. Backslashes sind ebenfalls gefährlich, weil manche Komponenten sie in Slashes umwandeln. Dazu kommen doppelte Kodierungen, bei denen ein Filter nur einmal dekodiert, der Browser oder ein nachgelagerter Layer aber ein zweites Mal.
Auch Whitelists können fehlerhaft sein. Wenn nur der Host geprüft wird, aber nicht das Schema, kann unter Umständen ein unerwünschtes Protokoll wie javascript:, data: oder ein mobiles Deep-Link-Schema durchrutschen. Moderne Browser blockieren manche Varianten, aber auf Browserverhalten allein darf sich keine Sicherheitsentscheidung stützen. In mobilen Kontexten oder eingebetteten WebViews gelten oft andere Regeln.
- Teilstring-Prüfungen auf erlaubte Domains sind unsicher.
- Relative Pfade sind nur dann sicher, wenn Parser-Normalisierung und Sonderformen berücksichtigt werden.
- Mehrfaches Dekodieren und unterschiedliche URL-Parser erzeugen reale Bypass-Möglichkeiten.
Besonders tückisch sind mehrstufige Redirect-Ketten. Eine Anwendung kann zunächst auf einen internen Pfad weiterleiten, der wiederum einen externen Parameter übernimmt. Wer nur den ersten Hop prüft, verpasst die eigentliche Schwachstelle. Deshalb sollten Redirects immer bis zum finalen Ziel verfolgt werden. In Burp lässt sich das manuell nachvollziehen oder über wiederholte Requests im Repeater reproduzieren.
Ein weiterer Sonderfall betrifft Host-Header-basierte Redirects. Manche Anwendungen erzeugen absolute URLs aus dem eingehenden Host-Header oder aus Proxy-Headern. Wenn diese Werte manipulierbar sind, entsteht funktional ebenfalls ein Open Redirect, oft kombiniert mit Passwort-Reset-Link-Manipulation oder Cache-Problemen. Solche Fälle werden leicht übersehen, weil kein offensichtlicher Redirect-Parameter existiert.
Wer tiefer testen will, sollte nicht nur die Anwendung, sondern auch vorgeschaltete Komponenten betrachten: CDN, WAF, Reverse Proxy, Load Balancer und Framework-Router. Unterschiedliche Normalisierungsschritte können dazu führen, dass ein Wert in Schicht A harmlos aussieht, in Schicht B aber als externe URL interpretiert wird. Genau diese Parser-Differenzen sind in der Praxis häufig der Grund, warum ein vermeintlich sicherer Filter doch umgangen werden kann.
Open Redirect in Authentifizierung, OAuth und SSO: Hier wird aus niedrig schnell kritisch
Der Kontext entscheidet über die Tragweite. In Authentifizierungs- und Autorisierungsflüssen kann Open Redirect deutlich kritischer werden als in gewöhnlichen Navigationsfunktionen. Besonders relevant sind Login-Seiten mit next-Parametern, Passwort-Reset-Prozesse mit Rücksprungzielen, Logout-Endpunkte mit externer Weiterleitung und OAuth-Implementierungen mit unsauber validierten redirect_uri- oder post_logout_redirect_uri-Werten.
In OAuth-Szenarien reicht es nicht, nur zu prüfen, ob eine Weiterleitung auf eine fremde Domain möglich ist. Entscheidend ist, ob Autorisierungscodes, Tokens oder Zustandswerte an ein manipuliertes Ziel gelangen können. Viele Implementierungen validieren nur Präfixe oder erlauben Wildcards. Dadurch kann ein Angreifer eine formal erlaubte, aber faktisch kontrollierte Zieladresse einschleusen. In Kombination mit schwacher state-Prüfung oder offenen Callback-Pfaden entsteht ein ernstes Risiko.
Auch SSO- und Föderationssysteme sind anfällig, wenn Rücksprungziele zwischen mehreren Komponenten transportiert werden. Ein IdP kann korrekt validieren, während der SP nach erfolgreicher Anmeldung einen unsicheren Redirect ausführt. In Berichten muss dann klar getrennt werden, welche Komponente die eigentliche Schwachstelle verursacht und ob Daten nur umgeleitet oder tatsächlich offengelegt werden.
Ein realistisches Beispiel ist ein Login-Flow, der nach erfolgreicher Anmeldung an einen Parameter returnUrl zurückspringt. Wenn dieser Wert vor dem Login gesetzt und nach dem Login ungeprüft verwendet wird, kann eine vertrauenswürdige Domain als Phishing-Einstieg missbraucht werden. Nutzer sehen die legitime Login-Seite, authentifizieren sich erfolgreich und landen danach auf einer täuschend echten externen Seite. Das erhöht die Glaubwürdigkeit des Angriffs massiv.
In manchen Fällen wird Open Redirect auch zur Umgehung von Sicherheitsprüfungen in Drittanwendungen genutzt. Wenn ein externes System nur Redirects auf eine vertrauenswürdige Domain erlaubt, kann ein offener Redirect auf genau dieser Domain als Sprungbrett dienen. Dadurch wird aus einer lokalen Schwachstelle ein Enabler für Angriffe gegen andere Systeme. Diese Ketten sind in Bug-Bounty- und Red-Team-Szenarien besonders relevant.
Bei der Analyse solcher Flows helfen Kenntnisse aus Login Testing, Oauth Testing und Session Management. Open Redirect darf hier nie isoliert betrachtet werden. Die zentrale Frage lautet: Welche sicherheitsrelevanten Daten oder Vertrauensentscheidungen hängen an der Weiterleitung?
Ein weiterer Punkt ist die Sichtbarkeit im Browser. Selbst wenn Tokens nicht direkt in der URL landen, können Codes, Zustandswerte oder Session-Indikatoren in Logs, Referrern oder Browser-Historien auftauchen. Deshalb sollte bei jedem Befund geprüft werden, ob die Weiterleitung nur Navigation beeinflusst oder ob sie tatsächlich sensitive Informationen in einen fremden Kontext verschiebt.
Praxisbeispiele aus dem Testalltag: Von harmlos wirkend bis ausnutzbar
Ein typischer Low-Impact-Fall ist ein Marketing-Endpunkt wie /out?url=..., der externe Links über eine Tracking-Seite leitet. Wenn klar erkennbar ist, dass Nutzer die Domain verlassen, keine Authentifizierung beteiligt ist und keine vertrauenskritischen Prozesse daran hängen, bleibt der Impact oft begrenzt. Trotzdem kann auch so ein Endpunkt für Phishing missbraucht werden, wenn die Zieladresse im UI nicht transparent dargestellt wird.
Deutlich relevanter ist ein Logout-Endpunkt mit frei kontrollierbarem Ziel:
GET /logout?returnTo=https://evil.example HTTP/1.1
Host: app.example.com
Wenn Nutzer nach dem Logout automatisch auf eine externe Seite springen, lässt sich das in Social-Engineering-Kampagnen nutzen. Noch kritischer wird es, wenn der Logout-Flow Teil eines SSO-Verbunds ist und mehrere Systeme nacheinander durchläuft. Dann kann ein Angreifer die Vertrauenskette ausnutzen, um Nutzer nach einer legitimen Aktion in einen fremden Kontext zu lenken.
Ein weiteres Beispiel ist ein Passwort-Reset-Prozess, der nach erfolgreicher Änderung an einen Parameter next zurückleitet. Der eigentliche Reset kann sicher implementiert sein, aber die abschließende Weiterleitung schafft eine glaubwürdige Angriffsfläche. Nutzer haben gerade eine sicherheitsrelevante Aktion abgeschlossen und erwarten eine interne Bestätigungsseite. Eine externe Zielseite wirkt in diesem Moment besonders überzeugend.
Auch APIs sind nicht frei von Open Redirects. Manche REST- oder GraphQL-nahe Backends liefern in Antworten Felder wie redirectUrl oder setzen 3xx-Header für Browser-Clients. Wenn Frontends diese Werte ungeprüft übernehmen, liegt die Schwachstelle funktional in der Gesamtkette. Solche Fälle werden oft erst sichtbar, wenn Browser-Traffic und API-Antworten gemeinsam analysiert werden, etwa im Rahmen von API Testing.
Ein praxisnaher Sonderfall ist die Kombination mit clientseitigem Code:
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": true,
"next": "//evil.example"
}
Wenn das Frontend anschließend per JavaScript window.location = response.next setzt, existiert kein klassischer Redirect-Header. Trotzdem ist das Ergebnis identisch. Solche Befunde werden von unerfahrenen Testern oft übersehen, weil sie nur nach 301- oder 302-Antworten suchen.
Ein weiterer realistischer Fall ist die Umgehung einer Domain-Whitelist über Subdomain-Verwechslung oder Parser-Differenzen. Die Anwendung erlaubt nur *.trusted.example, prüft aber nicht sauber auf Label-Grenzen oder normalisiert Punkte, Unicode und Großschreibung unvollständig. Dann kann ein scheinbar erlaubter Host in Wahrheit extern kontrolliert sein. Ohne präzise Host-Analyse wird so ein Befund schnell falsch bewertet.
Fehlbewertungen vermeiden: Wann ein Redirect kein Befund ist und wann doch
Open Redirect wird häufig entweder überbewertet oder vorschnell als irrelevant abgetan. Beides ist fachlich schwach. Ein valider Befund braucht eine klare Trennung zwischen beabsichtigter Funktion, unsicherer Implementierung und realistischem Missbrauch. Wenn eine Anwendung bewusst einen externen Partnerlink öffnet und das transparent kommuniziert, liegt nicht automatisch eine Schwachstelle vor. Wenn dieselbe Funktion aber in einem Authentifizierungs- oder Vertrauenskontext ohne Einschränkung arbeitet, ändert sich die Bewertung sofort.
Ein häufiger Fehler ist die Gleichsetzung von externer Navigation und Open Redirect. Nicht jede externe URL in einer Anwendung ist ein Redirect. Ein normaler Link auf eine fremde Domain ist keine Schwachstelle. Ein server- oder clientseitiger Mechanismus, der benutzerkontrollierte Ziele übernimmt und unter dem Vertrauensanker der eigenen Anwendung ausführt, ist etwas anderes. Genau diese Unterscheidung muss im Testbericht sauber formuliert werden.
Ebenso problematisch ist die Annahme, dass ein blockiertes http:// automatisch Sicherheit bedeutet. Wenn //host, kodierte Varianten oder interne Zwischenschritte weiterhin funktionieren, ist der Filter wirkungslos. Umgekehrt ist ein theoretischer Bypass ohne realistische Browser-Interpretation nicht automatisch ausnutzbar. Deshalb sollte jeder Nachweis mit einem tatsächlich funktionierenden End-to-End-Verhalten belegt werden.
Auch die Schweregradeinstufung verlangt Kontext. Ein Redirect auf einer wenig genutzten Hilfeseite ohne Login-Bezug kann niedrig sein. Derselbe Fehler in einem OAuth-Flow, in einer Passwort-Reset-Strecke oder als Sprungbrett für Drittanbieter-Whitelists kann mittel oder hoch werden. Wer nur generische Severity-Schablonen verwendet, verfehlt die technische Realität.
- Kein Befund: bewusst gesetzte externe Links ohne benutzerkontrollierte Redirect-Logik.
- Valider Befund: benutzerkontrollierte Zieladresse wird unter Vertrauenskontext der Anwendung ausgeführt.
- Erhöhte Kritikalität: Authentifizierung, Token-Übergaben, SSO, Passwort-Reset oder Drittanbieter-Whitelists sind betroffen.
Ein weiterer Bewertungsfehler betrifft interne Redirects. Manche Tester melden jede Pfadmanipulation als Open Redirect, obwohl nur interne Routen erlaubt sind. Das kann trotzdem sicherheitsrelevant sein, etwa bei Access-Control- oder Workflow-Bypass, ist aber dann eher ein Logikproblem als ein klassischer externer Open Redirect. Die technische Kategorie muss zur tatsächlichen Auswirkung passen.
Für belastbare Ergebnisse lohnt sich oft ein Abgleich mit verwandten Themen wie Ssrf, Authentication Bypass oder Csrf. Nicht weil Open Redirect automatisch dorthin führt, sondern weil ähnliche Vertrauensannahmen, Weiterleitungsmechanismen und Zustandswechsel betroffen sein können.
Saubere Remediation: Sichere Redirect-Designs statt fragiler Blacklists
Die beste Abwehr gegen Open Redirect ist nicht ein immer längerer Filter, sondern ein anderes Design. Idealerweise akzeptiert die Anwendung keine vollständigen externen URLs aus Nutzereingaben, sondern nur interne, serverseitig bekannte Ziele. Statt ?next=https://... wird dann beispielsweise ein interner Schlüssel wie ?next=dashboard verwendet, der auf dem Server auf einen festen Pfad gemappt wird. Damit entfällt die gesamte Klasse parserabhängiger URL-Bypässe.
Wenn externe Ziele fachlich notwendig sind, muss eine strikte Allowlist greifen. Diese Allowlist darf nicht auf Teilstrings basieren, sondern muss nach vollständigem Parsen auf Schema, Host, Port und gegebenenfalls Pfad prüfen. Wichtig ist dabei eine konsistente Normalisierung: Dekodierung, Unicode-Behandlung, Entfernung überflüssiger Punkte, Behandlung von Backslashes und klare Ablehnung unbekannter oder unerwarteter Schemes.
Ebenso wichtig ist die Bindung an den Nutzungskontext. Ein Login-Flow sollte nur auf interne Ziele oder auf wenige klar definierte Callback-Adressen zurückspringen. Ein Logout-Endpunkt braucht keine frei kontrollierbare Zieladresse. Passwort-Reset- und Kontoverwaltungsfunktionen sollten grundsätzlich auf feste interne Bestätigungsseiten führen. Je sicherheitskritischer der Prozess, desto enger muss der Redirect-Raum sein.
Ein robustes serverseitiges Muster sieht so aus:
allowed = {
"dashboard": "/account/dashboard",
"profile": "/account/profile",
"billing": "/account/billing"
}
target = request.get("next")
if target in allowed:
redirect(allowed[target])
else:
redirect("/account")
Wenn absolute URLs unvermeidbar sind, sollte die Prüfung eher so aussehen:
u = parse_url(user_input)
if u.scheme not in ["https"]:
reject()
if u.host not in ["portal.example.com", "help.example.com"]:
reject()
if u.port not in [null, 443]:
reject()
redirect(u.normalized)
Zusätzlich sollte die Anwendung bei externen Übergängen transparent sein. Eine Zwischenseite mit klarer Anzeige der Zieldomain reduziert Phishing-Risiken, ersetzt aber keine technische Validierung. Sie ist nur eine ergänzende Schutzmaßnahme. In sicherheitskritischen Flows sollte selbst diese Option vermieden werden.
Für Teams, die Burp in Entwicklungs- und Prüfprozessen einsetzen, lohnt sich ein wiederholbarer Testkatalog. Nach jeder Änderung an Redirect-Logik werden Standardvarianten gegen Repeater oder Scanner geprüft. Wer tiefer automatisieren will, kann Ansätze aus Scanner und Automatisierung nutzen, sollte aber Redirect-Befunde immer manuell validieren. Gerade bei parserabhängigen Sonderfällen ist menschliche Verifikation unverzichtbar.
Effiziente Test-Workflows mit Burp Suite: Reproduzierbar, nachvollziehbar und berichtsfest
Ein professioneller Workflow für Open Redirect besteht aus vier Phasen: Identifikation, Isolierung, Bypass-Test und Impact-Nachweis. In der Identifikation wird verdächtiger Traffic gesammelt. In der Isolierung wird ein einzelner Request reproduzierbar gemacht. Im Bypass-Test werden Normalisierung und Filterlogik systematisch untersucht. Im Impact-Nachweis wird belegt, warum der Befund praktisch relevant ist.
Für die Identifikation ist eine saubere Burp-Konfiguration entscheidend. Scope, Proxy-Filter und nachvollziehbare Session-Zustände sparen viel Zeit. Bei Problemen mit Zertifikaten oder Proxy-Verhalten helfen Grundlagen aus Zertifikat Installieren und Proxy Einrichten. Redirect-Tests scheitern oft nicht an der Anwendung, sondern an unsauberem Setup, etwa wenn Browser-Cache, automatische Weiterleitungen oder Session-Wechsel die Beobachtung verfälschen.
In der Isolierungsphase wird der Request in Repeater gebracht und auf das Minimum reduziert. Unnötige Header, Tracking-Cookies und wechselnde Parameter werden entfernt, solange die Funktion erhalten bleibt. Dadurch wird sichtbar, welche Eingabe wirklich den Redirect steuert. Wenn Responses schwer vergleichbar sind, kann Comparer Anwendung helfen, Unterschiede zwischen erlaubten und blockierten Varianten präzise herauszuarbeiten.
Beim Bypass-Test ist Disziplin wichtiger als Masse. Nicht hundert Payloads gleichzeitig, sondern eine Hypothese nach der anderen: Wird nur auf http gefiltert? Wird nur der Anfang des Strings geprüft? Wird einmal oder mehrfach dekodiert? Wird der Host korrekt geparst? Diese Fragen führen schneller zum Ziel als blindes Fuzzing. Falls eine größere Variantenmenge nötig ist, kann Intruder unterstützend eingesetzt werden, etwa für Host- oder Kodierungsvarianten. Die Ergebnisse müssen aber immer manuell interpretiert werden.
Der Impact-Nachweis sollte schließlich nicht nur den Redirect zeigen, sondern den Missbrauchspfad. Das kann ein glaubwürdiger Phishing-Flow sein, eine Umgehung einer Callback-Whitelist, ein externer Sprung nach Login oder eine Kette mit einem zweiten Endpunkt. Ein Bericht ohne Kontext bleibt schwach, selbst wenn der technische Nachweis korrekt ist.
Wer regelmäßig Webanwendungen prüft, sollte Open Redirect als festen Bestandteil im Web Pentest verankern. Die Schwachstelle ist zwar oft kleiner als Xss oder Sql Injection, aber gerade in Auth- und Integrationsflüssen kann sie unverhältnismäßig viel Schaden ermöglichen. Gute Tester erkennen diese Kontexte früh und prüfen Redirects nicht isoliert, sondern als Teil der gesamten Vertrauenskette.
Berichtsfeste Dokumentation: So wird aus einem Redirect-Test ein belastbarer Befund
Ein guter Befund zu Open Redirect ist präzise, reproduzierbar und kontextbezogen. Die Dokumentation sollte den betroffenen Endpunkt, den steuernden Parameter, die notwendige Authentifizierung, die getesteten Varianten und das tatsächliche Ergebnis enthalten. Wichtig ist außerdem, ob die Weiterleitung serverseitig per Location-Header, clientseitig per JavaScript oder über eine mehrstufige Kette erfolgt.
Ein belastbarer Nachweis besteht idealerweise aus einem Minimal-Request, einer klaren Response und einer kurzen Beschreibung des Missbrauchsszenarios. Beispiel:
GET /auth/login?returnUrl=%2F%2Fevil.example HTTP/1.1
Host: app.example.com
HTTP/1.1 302 Found
Location: //evil.example
Dazu gehört die Einordnung, wie Browser dieses Ziel interpretieren und warum die vorhandene Validierung versagt. Wenn ein Bypass nur unter bestimmten Bedingungen funktioniert, etwa nach doppelter Dekodierung oder nur in mobilen WebViews, muss genau das dokumentiert werden. Unklare Aussagen wie „möglicherweise ausnutzbar“ ohne reproduzierbaren Ablauf sind in professionellen Berichten wertlos.
Ebenso wichtig ist die Abgrenzung. Wenn keine Token, Sessions oder sensitiven Daten abfließen, sollte das explizit erwähnt werden. Wenn der Impact primär in Phishing oder Whitelist-Umgehung liegt, muss genau dieser Pfad beschrieben werden. Übertreibung schadet der Glaubwürdigkeit. Untertreibung ebenso, wenn der Redirect Teil eines Auth- oder OAuth-Flows ist.
Für die Remediation sollte nicht nur „Whitelist verwenden“ im Bericht stehen. Besser ist eine konkrete Empfehlung: nur interne Schlüssel statt URLs akzeptieren, absolute externe Ziele verbieten, Parser-konsistente Validierung implementieren, sicherheitskritische Flows auf feste interne Ziele beschränken und Redirect-Tests in Regressionen aufnehmen. So wird aus einem Einzelfund eine nachhaltige Verbesserung.
Wenn Unsicherheit über die rechtliche oder organisatorische Einordnung eines Tests besteht, sind klare Grenzen wichtig. Redirect-Tests können schnell in Phishing-nahe Demonstrationen übergehen. Solche Nachweise dürfen nur im freigegebenen Rahmen erfolgen. Für den professionellen Umgang mit Testgrenzen und Freigaben ist Burp Suite Legalität ebenso relevant wie sauberes Vorgehen im Pentesting. Technische Präzision und kontrollierte Durchführung gehören zusammen.
Weiter Vertiefungen und Link-Sammlungen
Passende Vertiefungen, Vergleiche und angrenzende Hydra-Themen:
Passender Lernpfad:
Passende Erweiterungen:
Passende Lernbundels:
Passende Zertifikate: