URL-Redirects – eine gut gemeinte Schwachstelle

Sie setzen Newsletter ein und verlinken von dort auf Drittseiten? Sie zählen die ausgehenden Clicks von Ihrer Webseite? Dann sind Sie gefährdet, für die sog. „die „URL-Redirect“ /“Open-Redirect“-Schwachstelle.

Die URL Redirect Schwachstelle von Webseiten kann ein Angreifer dazu ausnutzen, um den Besucher einer Webseite auf seine eigene und nicht vertrauenswürdige Webseite weiterzuleiten. Diese Schwachstelle ist bekannt und wird über unsichere Skripte bei der Entwicklung einer Webseite verursacht. Der Angreifer kann diese Schwachstelle über die unsicheren Skripte der Webentwickler daher nutzen, ohne selbst die Webseite zu hacken.

Der Angriff wird so ausgeführt, dass dem Internet-Benutzer ein Weblink angeboten wird, der aus zwei Teilen besteht. Im ersten Teil sieht der Internetnutzer einen vertrauten und bekannten Domain-Namen und im zweiten Teil des Links die eigentliche Weiterleitung auf die nicht vertrauenswürdige Webseite des Angreifers. Dabei nutzt der Angreifer als Schwachstelle das Vertrauen des Internetnutzers in die Wiedererkennung des bekannten Teils aus und verleitet den User damit den Link anzuklicken. Den zweiten Teil des Links mit dem schädlichen Teil und der URL der Webseite des Angreifers nimmt der Internetnutzer dann nicht mehr wahr. Technisch läuft die Weiterleitung auf die nicht vertrauenswürdige Seite des Angreifers für den Internetnutzer vollkommen transparent ab, womit auch technikaffine User diese Art der Weiterleitung häufig nicht bemerken.

Der Angreifer muss die so manipulierten Links nur noch den Suchmaschinen bekannt machen. Dies geschieht dadurch, dass die neuen Links auf Drittseiten platziert werden. Die Suchmaschinen nehmen die URLs mit in den Index, der beschreibende Text wird dabei von der missbräuchlichen Zielseite dargestellt. Damit werden die Themen des Fake-Shops oder eines anderen missbräuchlichen Dienstes über die missbrauchte Domäne bekannt gemacht. Dies kann man über Programme, die ermitteln welche Links auf die eigene Seite zeigen, selbst sehr gut nachvollziehen wenn man betroffen ist.

Welche Formen des URL-Redirects gibt es?

Die als open Redirect bekannte Schwachstelle, bei der Weiterleitung von Webseiten-Besuchern auf eine vom Angreifer manipulierte Seite erfolgt, basiert im Grunde darauf, dass die Weiterleitung parametrisiert ist und damit erst zur Laufzeit die konkrete Weiterleitung aufgelöst wird. Ein einfaches Beispiel eines php-Skripts könnte dabei so aussehen:

$jumpurl=$_GET[‘link’];

header("location: ".$jumpurl);

Da der Paramter “link” nicht überprüft wird kann der Angreifer etwa über einen manipulierten Link wie: https://known-good.com?link=http://unknown-bad.com auf seine Angriffs-Webseite weiterleiten. Diesen Link kann der Angreifer per Email an den Nutzer der Internetseite versenden oder über Treffer aus Suchmaschinen platzieren. Wird der Link angeklickt landet der Webseiten-Besucher automatisch auf der Seite des Angreifers.

Auch das folgende Beispiel zeigt ein komplexeres Beispiel für die URL Redirect Schwachstelle:

$domain=$_GET[‘domain’];

if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['password']) {

if ($_POST['autologin'] == 'true')                       

       header ("location: ".$domain);}

Das Beispiel zeigt eine Login Prozedur, die nach erfolgtem Login eine Weiterleitung auf die in $domain gespeicherte Webseite ausführt. Dies wird häufig aus Komfortgründen so ausgeführt, da der Internet-Nutzer auf die Seite weitergeleitet werden soll, die er vor dem Login angesteuert hatte. Da in diesem Beispiel der Parameter ‘domain‘ nicht überprüft wird, kann der Angreifer die daraus resultierende Redirect Schwachstelle der Webseite ausnutzen. Im Beispiel geschieht die Weiterleitung nach dem Login auf der bekannten Seite. Dies erreicht der Angreifer indem er etwa folgenden Link erstellt:

https://known-good.com?checkid=Login&…&domain=http://unknown-bad.com

Klickt der User den Link an, wird er zunächst auf die Login Page der bekannten Webseite gelenkt. Nach erfolgtem Login wird der User automatisch auf die manipulierte Seite des Angreifers http://unknonw-bad.com weitergeleitet. Selbst für technikaffine User ist es schwierig diese Weiterleitung festzustellen.

Häufige Angriffspunkte sind Redirect-Seiten, die zählen sollen, wie oft ein ausgehender Link verwendet wird. Z.B. wurde der folgende Linkmechanismus bei einer Zeitung gefunden:

...zeitung.com/redirect.asp?url=[ZIELURL]
Eine Zeitung verlinkt plötzlich mit 12 000 Links auf ein missbräuchliches Angebot

Es gibt auch Trackingcodes in der Werbebranche (Affiliate Marketing), die Werbepartnern erlauben auf Provisionsbasis zu einer Drittseite zu verlinken. Dort sind beispielsweise folgende Links im Einsatz:

tracking.xxx.de/?deepurl=[ZIELURL]

Andere häufige Parameter vor denen man sich in acht nehmen sollte sind url=, link=, redirect=. Tauchen diese in Links auf der eigenen Seite auf und können die Ziel-Domänen beliebig verändert werden ist Handeln notwendig, denn Angreifer scannen ständig Webseiten nach solchen Mustern und nutzen sie für ihre Zwecke.

Was kann ich gegen diese Form der Manipulation tun?

Beim URL Redirect handelt es sich um eine Schwachstelle der Webseite, die bereits bei der Erstellung der Webseite durch unsichere Skripte entsteht. Die Skripte können durch den Webseitenbetreiber programmiert sein oder sie kommen durch verwendete Plugins ins System. So war beispielsweise ein populäres WordPress Newsletter-Plugin betroffen, das offenbar zählen wollte, wie oft Links im Newsletter geklicked werden. Ebenso betroffen war das WordPress und Joomla Plugin AcyMailing und Noptin.

Die Schwachstelle kommt dadurch zustande, dass Parameter, die über einen Webseiten-Link übergeben werden, nicht auf deren Gültigkeit überprüft werden. Die Folge ist eine ungewollte und für den Internet-Nutzer evtl. riskante Weiterleitung auf eine manipulierte Seite des Angreifers. Hier ist der Betreiber der Internetseite gefragt, diese gegen URL Redirects zu härten, also widerstandsfähig zu halten. Die URL Redirect Schwachstelle kann beispielsweise vermieden werden, in dem die URLs zur Weiterleitung hart in die Skripte geschrieben werden. Der Betreiber der Webseite weiß ja häufig, wohin er verlinken möchte. Ist die Auflösung der Weiterleitung erst zur Laufzeit des Skripts möglich, muss entsprechend überprüft werden, ob der parametrisierte Link auch auf die Domain weiterleitet, die der Webseiten-Betreiber beabsichtigt. Um dies für mehrere Zielseiten abzubilden, bietet sich hier an, eine Liste an known-good Webseiten URLs anzulegen und vor dem Redirect die Ziel-URL gegen diese Liste abzugleichen. Ebenso möglich sind Weiterleitungen, die einen zusätzlichen durch ein geheim gealtenes Verfahren ermittelten Hashwert besitzen und prüfen und entsprechend nur bei Übereinstimmung weiterleiten.

>>> Lesen Sie auch: Open-Redirect im Beispiel Google

Website Redirects im Umfeld von Fake-Webshops und SEO Fraud

Hacking von Webseiten

Grundsätzlich werden sogenannte „Redirects“ dafür verwendet, den Besucher sowie Suchmaschinen-Crawler von einer URL auf eine andere umzuleiten. Redirects sind damit für Websites zunächst ein nützliches Werkzeug, um Aufrufe von Website Besuchern und Crawlern das Auffinden von Inhalten auf der eigenen Webpage zu erleichtern.

Für Redirects gibt es verschiedene Anwendungen, die dem Webmaster ermöglichen, die Aufrufe der Website zu steuern. So werden Redirects in diesem Zusammenhang häufig eingesetzt, wenn sich etwa der Domain-Name geändert hat und Aufrufe für die ursprüngliche Domain auf die neue umgeleitet werden, der Inhalt einiger Seiten aktualisiert wurde und nur noch die aktuelle Seite oder eine bestimmte Seite angezeigt werden soll oder wenn zwei Webpages zusammengeführt werden zu einer neuen.

Die Redirects erhöhen dabei den Komfort für den Benutzer, da Redirects so eingestellt werden können, dass diese ohne Interaktion mit dem Website-Besucher ablaufen und verringern die Wahrscheinlichkeit, dass gewünschter Traffic etwa durch geänderte Domain-Namen verloren geht. Dies gilt natürlich auch für Links, die im Internet auch weiterhin auf die alte Domain zeigen. Hier bewirken Redirects zudem, dass der sogenannte „SEO Link Juice“ auf die neue URL abfärbt und damit die Suchmaschinensichtbarkeit auf die neue Domain übertragen wird. Generell übernehmen die Suchmaschinen mit der Zeit bei permanenten Redirects die SEO Authority für die neue URL.

Was/Welche Formen des Redirects gibt es?

Neben der Möglichkeit einen Redirect über den Registrar oder Website Host einzustellen, können Redirects auch auf Server-Ebene platziert werden. Für den weit verbreiteten Apache Webserver übernimmt dies beispielsweise das Config-File htaccess:

Apache Server

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [r=301,L]

Eine dynamische Steuerung der Redirects kann auch über Skriptsprachen wie bspw. php oder Javascript erreicht werden:

PHP

<?php header("Location: http://www.example.com/new-url "); exit();?>

Javascript

<script>window.location.href = "http://www.example.com/new-url/"</script>

Auch hier wird ohne Mitwirkung des Surfers der Aufruf einer Website auf eine andere weitergeleitet.

Wo ist das Problem?

Da die Aufrufe des Redirects ohne die Mitwirkung des Users ablaufen, wird diese Technik auch von Angreifern erfolgreich dazu verwendet, bei gehackten Websites den Website Besucher oder Search Engine Crawler auf eine manipulierte Website weiterzuleiten. Damit gelingt es bspw. Betreibern von Fake Webshops vom SEO Ranking der gekaperten Website zu profitieren und so Netzwerk-Traffic auf manipulierte Websites umzuleiten.

Dabei hat der Internetbenutzer das Risiko bei Einkäufen in Fake Webshops einem Betrug zum Opfer zu fallen oder sich über die manipulierte Webseite Schadsoftware einzufangen. Aber auch der Website Betreiber, dessen gekaperte Seite auf den Fake Webshop verlinkt, läuft Gefahr auf einer Blacklist der Search Engine Betreiber zu landen und damit im Internet für Suchen unsichtbar zu werden. Dies kann gerade bei Geschäftstätigkeiten im E-Commerce Bereich einen gravierenden Schaden für den Webseitenbetreiber darstellen.

Wie werden Redirects festgestellt?

Im Rahmen des INSPECTION Projekts konnten wir verschiedene Redirects feststellen, die von Angreifern platziert wurden, um auf Fake-Shops zu verweisen.

Ein Beispiel einer festgestellten manipulierten .htaccess Website für einen statischen Redirect sieht dabei folgendermaßen aus:

RewriteEngine on
AddHandler x-httpd-php55 .php5
RewriteRule ^pillen/(.*)$ lib/mail/.cache/cache.php5?q=$1 [L]

Hier wurde die reguläre .htaccess Datei um einen Eintrag erweitert, der alle Aufrufe mit dem Begriff „Pillen“ im URL String auf ein php Skript mit dem Namen „cache.php5“ weiterleitet. Das Skript wiederum baut eine Internetseite mit Verlinkungen zu Fake-Shops auf.

Eine deutlich schwieriger festzustellende Form des Redirects stellen dynamische Redirects dar. Hier wird die Ziel URL auf die weitergeleitet werden soll zur Laufzeit aus einzelnen Parametern aufgebaut.

Im folgenden Code-Snippet wird die Funktion „IIPPVOAEg34tsji2n9“ bei (1) über einen dynamische Parameter „$IzgF9rOtJZ0wOe1“ aufgerufen und erstellt den php Code für den Redirect. Der Rückgabewert „$IGe4PXeA42DaRD0“ wird in einer weiteren Funktion (2) dazu verwendet den PHP Redirect anzupassen und über eval bei (3) auszuführen:

(1) $IGe4PXeA42DaRD0 = (IIPPVOAEg34tsji2n9($IzgF9rOtJZ0wOe1, "redirect", "yes")); 
(2) if (stripos("qqq" . $IGe4PXeA42DaRD0, "THIS" . "ISPH" . "PRED" .  "IRECT")) {	$IGe4PXeA42DaRD0 = str_ireplace("THI" . "SIS" . "PHP" . "REDI" . "RECT", "", $IGe4PXeA42DaRD0);
$IGe4PXeA42DaRD0 = str_ireplace("<?php", "", $IGe4PXeA42DaRD0);
$IGe4PXeA42DaRD0 = str_ireplace("?>", "", $IGe4PXeA42DaRD0);
$IGe4PXeA42DaRD0 = str_ireplace("[DEFISKEY]", str_ireplace("-", "+", urldecode($IGe4PXeA42DaRD1)), $IGe4PXeA42DaRD0); 

(3) eval($IGe4PXeA42DaRD0);

Die dynamisch zur Laufzeit erstellte URL wird vom Angreifer gesteuert und leitete bei unserer Untersuchung den Webseitenbenutzer unter (3) auf eine manipulierte Website weiter.

Diese Form des Hackings ist bei manipulierten Webseiten auch deswegen schwer zu analysieren, da der Angreifer für die verwendeten Variablen keine sprechenden Namen verwendet, sondern mit Funktionsnamen wie “ IIPPVOAEg34tsji2n9″ den Code möglichst unleserlich gestaltet.

Was kann ich tun?

Eine Voraussetzung dafür, dass eine Website manipuliert werden kann, um bspw. die Datei .htaccess so zu konfigurieren, dass der Website Besucher auf die manipulierte Seite des Angreifers weitergeleitet wird, ist der Zugriff des Angreifers auf den Webspace. Dafür gibt es verschiedene Möglichkeiten, die über sogenannte Angriffs-Vektoren Schwachstellen eines Systems ausnutzen und einen administrativen Zugriff auf die Website ermöglichen. Hier ist der Betreiber der Website gefordert genau diese Schwachstellen möglichst früh zu erkennen und zu beheben, um einen Angriff über genau diese Angriffsvektoren zu verhindern. Als Beispiel sind schwache Admin Passwörter, die für CMS Systeme verwendet werden, im Verhältnis einfach zu beheben. Schwieriger dagegen ist es, fehlerhafte Software zu erkennen und hier über entsprechende Software-Patches die Sicherheitslücken zu schließen. Software ist nie fehlerfrei, daher ist es die Herausforderung an den Website Betreiber das verwendete System aktuell zu halten, um die bekannten Schwachstellen über vorhandene Patches zu schließen und damit den Angriffsvektor über die zugehörige Schwachstelle zu schließen. Wichtig ist hier alle Softwaremodule die vom Website Betreiber administriert werden, wie CMS, Datenbank, Plugins, Webserver, FTP Server, im Blick und aktuell zu halten.

Nach einem erfolgreichen Angriff müssen die Angriffsspuren festgestellt und beseitigt werden. Eine sog. post-mortem Analyse hilft die „lessons learnt“ zu verarbeiten. Bei der post-mortem Analyse sollte auch betrachtet werden, wie zum einen die Angriffsfläche verringert werden kann, um zukünftige Angriffe zu erschweren. Hier steigert die Resilienz eines Webauftritts gegen Angriffe sicherlich das bereits beschriebene regelmäßige Update von Software. Auf der Seite der Intrusion Detection helfen Security Plugins, die zum einen in der Lage sind die Aktualität von Softwaremodulen festzustellen als auch verdächtige Vorgänge zu detektieren. Damit wird die Widerstandsfähigkeit des Systems gegen Angriffe genauso erhöht wie die Sichtbarkeit des Website Betreibers auf eventuelle verdächtige Vorgänge. Dies verkürzt die Zeit bis Security Incidents festgestellt und behandelt werden können und erhöht damit wesentlich die Sicherheit Ihrer Website und deren Besucher.

BDO AG