Offene Weiterleitungen: wenn ein echter, vertrauenswürdiger Link zum Angreifer führt
Man fährt mit der Maus über einen Link, sieht google.com oder den Namen einer bekannten Website erscheinen, und klickt ohne Argwohn. Trotzdem landet man auf einer Phishing-Seite. Das ist weder ein Anzeigefehler noch eine gefälschte Adresse: Der Link führte anfangs wirklich zur echten Website. Das ist die Mechanik einer offenen Weiterleitung (Open Redirect).
Was ist eine offene Weiterleitung?
Viele Websites bieten eine völlig legitime Funktion an: einen Besucher nach einer Aktion an eine andere Adresse weiterzuleiten, zum Beispiel nach einer Anmeldung, einem Klick auf einen gesponserten Link, oder über einen Link-Kürzer. Die Website erhält in ihrer URL die Zieladresse und leitet den Browser dann zu dieser Adresse weiter.
Die Schwachstelle entsteht, wenn die Website jede beliebige Zieladresse akzeptiert, ohne zu prüfen, ob sie zu einer zugelassenen Liste gehört. Die Entwickler haben einen nützlichen Weiterleitungsdienst gebaut; sie haben nur vergessen, die Hintertür zu schließen. Jeder kann dann einen Link erstellen, der mit dem Namen der vertrauenswürdigen Website beginnt, aber woanders endet — beim Angreifer.
Anatomie eines präparierten Links
Nehmen wir ein bewusst vereinfachtes Beispiel:
https://www.google.com/url?q=https://site-pirate.example
Dieser Link öffnet sich tatsächlich auf den Servern von Google: Der Domainname google.com ist echt, und nichts in der Adressleiste lügt darüber. Aber der Parameter ?q= transportiert eine zweite Adresse, die zum eigentlichen Ziel wird, sobald die Weiterleitung ausgelöst wird. Dieselben Mechanismen finden sich bei anderen, ebenso gängigen Parameternamen: ?dest=, ?redirect=, ?target=, ?next= oder auch ?url=. Eines dieser Schlüsselwörter direkt nach einem Fragezeichen zu erkennen, gefolgt von einer zweiten Webadresse, ist das einfachste Signal, auf das man achten sollte.
Warum Angreifer diese Technik lieben
Diese Methode löst für einen Angreifer zwei Probleme gleichzeitig.
- Spamfilter umgehen. Secure Email Gateways vergeben eine Vertrauensbewertung für die in einer E-Mail vorhandenen Domains. Ein Link, der mit einer äußerst angesehenen Domain beginnt, etwa der einer Suchmaschine oder eines großen sozialen Netzwerks, erhält oft eine ausgezeichnete Bewertung, selbst wenn der Filter den versteckten Teil des Links nie betrachtet.
- Menschliches Lesen manipulieren. Eine vorsichtige Person hat gelernt, den Domainnamen vor dem Klicken zu prüfen. Bei dieser Art von Link wendet sich diese Prüfung gegen sie: Sie sieht den offiziellen Markennamen deutlich am Anfang der Adresse und hört genau dort auf zu lesen.
Das Verfahren profitiert so sowohl von technischem Vertrauen (der Bewertung des Spamfilters) als auch von menschlichem Vertrauen (dem Leseverhalten), ohne weder die Domain noch die Server der vertrauenswürdigen Website nachahmen zu müssen.
Unter der Haube: Codes 301, 302 und Weiterleitungsketten
Technisch gesehen spielt sich eine Weiterleitung in einer sehr kurzen Antwort des Servers an den Browser ab. Der Server antwortet mit einem HTTP-Statuscode, ohne eine sichtbare Seite anzuzeigen: 302 für eine temporäre Weiterleitung, 301 für eine dauerhafte. Der Browser gehorcht sofort und lädt die nächste Adresse, ohne dass der Nutzer etwas davon bemerkt.
Nichts hindert daran, mehrere Weiterleitungen hintereinander zu verketten: eine sehr angesehene Domain A zu einer bescheideneren, ihrerseits verwundbaren Domain B, zur endgültigen Phishing-Seite. Jedes zusätzliche Glied verwischt die Spur ein wenig mehr und erschwert die Arbeit von jemandem, der den Link nur durch Ansehen bis zum Ursprung zurückverfolgen möchte.
Wie man die Falle erkennt und reagiert
Die richtige Methode besteht darin, die vollständige Adresse von links nach rechts zu lesen, ohne beim ersten erkannten Namen aufzuhören. Das zu suchende Signal ist einfach: ein zweites http:// oder https://, das weiter hinten in derselben Zeile versteckt ist, kündigt fast immer eine offene Weiterleitung an, ebenso wie das Vorhandensein eines Parameters wie ?q= oder ?url= unmittelbar davor. Diese Wachsamkeit ähnelt der, die für das Lesen eines irreführenden Domainnamens auf andere Weise nötig ist, etwa durch ähnlich aussehende Buchstaben: siehe den Ratgeber Punycode und Homografen.
Um ein Ziel ohne jedes Risiko zu prüfen, kann man die Adresse in einen Online-Link-Resolver einfügen oder einen curl -I-Befehl von einem Terminal aus ausführen: Der Server antwortet mit dem Weiterleitungscode und dem endgültigen Ziel, ohne die Seite jemals in einem Browser zu laden.
Zwei Meldungen sind sinnvoll und betreffen zwei unterschiedliche Akteure. Zuerst informiert man das Unternehmen, dessen Domain als Ausgangspunkt dient (zum Beispiel über dessen Sicherheitsformular oder seine für Schwachstellen zuständige Adresse), damit es den ungeprüften Parameter in seinem Code korrigiert. Danach informiert man den Hoster der Zielseite, genau wie bei jeder anderen Phishing-Seite (siehe die richtige abuse@-Adresse eines Hosters finden), da nur er sie verschwinden lassen kann.
Eine E-Mail, die einen solchen Link enthält, bleibt im Übrigen eine von einem echten Server versandte E-Mail mit ihrer eigenen Spur: siehe den Ratgeber Einen Phishing-Fall analysieren: von der Nachricht zur Infrastruktur. Fügt man die vollständige E-Mail in Baitback ein, verfolgt das Werkzeug selbst die gesamte Weiterleitungskette bis zur endgültigen Seite, ohne dass man klicken oder ein Terminal öffnen muss.
- Eine offene Weiterleitung ist eine legitime Funktion, die zweckentfremdet wird: die Ausgangsseite ist echt, das Ziel nicht zwangsläufig.
- Zu beachtende Parameter sehen aus wie
?q=,?url=,?redirect=,?dest=,?target=oder?next=. - Diese Technik täuscht sowohl Spamfilter, dank des Rufs der ersten Domain, als auch das menschliche Lesen, das oft zu früh aufhört.
- Die Codes 301 und 302 erlauben es, mehrere unsichtbare Weiterleitungen zu verketten, bevor die präparierte Seite erreicht wird.
- Man muss den ganzen Link lesen und sowohl die Ausgangsseite (damit sie die Schwachstelle behebt) als auch den Hoster der Zielseite melden.