Mit diesem Beitrag zu unserer Reihe zur OWASP Top Ten, den zehn häufigsten Sicherheitslücken in Webapplikationen, sind wir auf Platz 10 angekommen. Dabei geht es um ungeprüfte Um- und Weiterleitungen.

Um- und Weiterleitungen werden in Webapplikationen häufig eingesetzt, um den Nutzer automatisch auf die gewünschte Zieladresse zu navigieren. Hierbei wird zwischen externen und internen Weiterleitungen unterschieden. Externe Weiterleitungen schicken die Nutzer z.B. von der eigenen Homepage auf Domains einer Tochtergesellschaft oder aus dem Webshop zur Internetseite des Zahlungsanbieters. Interne Weiterleitungen bleiben auf der Domain der Webapplikation und werden z.B. häufig in Content Management Systemen nach einer Umstellung des Webangebots eingesetzt, um die gleichen Inhalte unter verschiedenen URLs erreichbar zu machen.

Wird das Ziel einer solchen Weiterleitung als Parameter an die Webapplikation übergeben, kann ein Angreifer solche Weiterleitungen ggf. manipulieren und die Nutzer der Anwendung auf schadhafte Seiten weiterleiten. Bei internen Weiterleitung können auf diese Weise unter Umständen Zugangskontrollen umgangen werden.

Beispielszenarien

  • Eine Webanwendung stellt die Funktion „umleitung.php“ zur Umleitung bereit. Das Ziel der Umleitung wird als Parameter „url“ übergeben. Ein Aufruf der Funktion kann also mit der folgenden URL geschehen:
    http://www.example.com/umleitung.php?url=google.com

Durch Änderung des Parameter „url“ kann ein Angreifer in einer scheinbar seriösen URL von www.example.com die Weiterleitung auf eine schadhafte URL unterbringen und bspw. per Mail versenden:
http://www.example.com/umleitung.php?url=attacker-domain.com

  • In einer Webanwendung finden interne Umleitungen in verschiedene Funktionsbereiche statt. Auch hier wird das Ziel der Umleitung als Parameter entgegengenommen, diesmal mit Namen „fwd“ (für engl. „forward“). Für den Benutzer ist ein „forward“ komplett transparent, da die ursprüngliche URL identisch bleibt und lediglich der Inhalt der Seite von der Webapplikation ausgetauscht wird. Ein Angreifer könnte hier als Parameter allerdings eine URL angeben, auf die er für gewöhnlich keinen Zugriff hätte und somit Zugangskontrollen umgehen:
    http://www.example.com/angebote.php?fwd=admin.php

Gegenmaßnahmen

Um- und Weiterleitungen sollten so weit wie möglich vermieden werden. Falls das nicht möglich ist, sollte die Ziel-URL nicht als dynamischer Parameter übermittelt werden. Ansonsten sollte die Weiterleitungsfunktion zusätzliche Logik zur Validierung des Parameters enthalten, die die angegebene URL auf Gültigkeit überprüft und bei internen Weiterleitungen die Berechtigungen des Nutzers für den Aufruf sicherstellt. Das Anlegen einer Liste von Ziel-URLs ist ebenfalls denkbar, sodass keine konkreten URLs in den Nutzerparametern übermittelt werden, sondern lediglich eine entsprechende ID, welche serverseitig die Ziel-URL zugeordnet wird.

Zusammenfassung

Der Einsatz von Um- und Weiterleitungen in Webapplikationen kann die Umleitung von Nutzern auf schadhafte Seiten oder den Aufruf von zugriffsbeschränkten Seiten ermöglichen. Daher sollten Um- und Weiterleitungen so wenig wie möglich eingesetzt werden. Sollten sie doch nötig sein, sollten die jeweiligen Funktionen vor einer Manipulierbarkeit der Ziel-URLs geschützt werden.