Angriffe per Manipulation der URL

Dezember 2016

Einführung zu URLs

Die URL (Uniform Resource Locator)einer Web-Anwendung ist der Vektor, mit dem die gefragte Quelle angezeigt werden kann. Es handelt sich um eine Kette von druckbaren ASCII Zeichen, die aus fünf Teilen besteht :

  • Dem Namen des Protokolls : also sozusagen die Sprache, die verwendet wird, um auf dem Netzwerk zu kommunizieren. Das am häufigsten eingesetzte Protokoll ist das HTTP Protokoll (HyperText Transfer Protocol), welches den Austausch von Websites im Format HTML ermöglicht. Es können aber auch viele andere Protokolle verwendet werden (FTP, News, Mailto, etc.)
  • ID und Passwort : ermöglichen es, die Zugangsparameter zu einem geschütztem Server einzugeben. Dies ist allerdings nicht empfehlenswert, da dass Passwort so klar ersichtlich in der URL ist.
  • Der Name des Servers : es handelt sich um den Domainnamen des Computers, auf dem die gewünschte Quelle liegt. Anmerkung: es ist möglich, die IP Adresse des Servers zu verwenden.
  • Die Nummer des Ports : dies ist eine Nummer, die einem Dienst zugeteilt ist und den Server wissen lässt, welche Art von Ressource verlangt wird. Der Port, der dem Protokoll standardmäßig zugeteilt ist, ist Port nummer 80. Wenn der Webservice des Servers Port nummer 80 zugeteilt ist, kann man die Portnummer nach Wunsch zuordnen.
  • Der Zugangspfad zur Ressource :Dieser letzte Teil erlaubt es dem Server, herauszufinden, wo die Ressource genau liegt, also den Ort ganz allegemein (Verzeichnis) und den Namen der gerfagten Ressource.

Eine URL hat die folgende Struktur :

Protokoll Passwort (freiwillig) Name des Servers Port
(freiwillig, wenn 80)
Pfad
http:// user:password@ de.kioskea.net :80 /glossair/glossair.php3

Die URL kann dazu dienen, Parameter an den Server zu übermitteln, indem nach den Dateinamen ein Fragezeichen gestellt wird, gefolgt von Daten im ASCII-Format. Eine URL ist dann eine Zeichenkette im folgenden Format :

http://de.kioskea.net/forum/index.php3?cat=1&page=2

Manipulation einer URL

Indem er bestimmte Teile der URL verändert, kann ein Hacker einen Server dazu bringen, Seiten anzuzeigen, auf die er keine Zugriffsrechte hat.

Bei dynamischen Websites werden Parameter meist in folgender Form über die URL ausgegeben :

http://opfer/forum/index.php3?cat=2

Die Daten, die in der URL vorhanden sind, werden automatisch von der Seite ausgegeben, und beim normalen Navigieren klickt ein User nur auf Links, die auf der Website liegen. Wenn ein User den Parameter aber manuell verändert, kann er verschiedene Werte ausprobieren, zum Beispiel :

http://opfer/forum/index.php3?cat=6

Wenn der Entwickler nicht mit einer solchen Situation gerechnet hat, kann der Hacker möglicherweise Zugang zu einem geschützen Bereich erhalten.

Außerdem kann der Hacker die Website dazu bringen,auf eine unerwartete Situation zu reagieren, zum Beispiel :

http://opfer/forum/index.php3?cat=***********
Im obigen Fall ist es möglich, dass die Website einen nicht vorgesehenen Zustand einnimmt und über eine Fehlermeldung Informationen preisgibt, wenn der Entwickler nicht vorgesehen hat, dass die Daten nicht aus Zahlen bestehen.

Trial and Error

Ein Hacker könnte auf gut Glück verschiedene Verzeichnisse und Erweiterungen ausprobieren, um wichtige Informationen zu finden. Hier sind einige klassische Beispiele :

  • Suche nach Verzeichnissen, die Admin-Rechte über die Seite verleihen :
    http://opfer/admin/
    http://opfer/admin.cgi
  • Suche nach Scribt, dass Informationen über das fremde System preisgibt :
    http://opfer/phpinfo.php3
  • Suche nach Sicherungskopien. Die Erweiterung .bak wird oft gebraucht, und wird nicht standardmäßig von Servern übersetzt, was dazu führen kann, dass ein Script angezeigt wird :
    http://opfer/index.php3.bak
  • Suche von versteckten Dateien am fremden System. Bei UNIX Systemen kann es vorkommen, dass vom System geschaffene Dateien über Web zugänglich sind, wenn das Stammverzeichnis der Website dem Verzeichnis eines Users entspricht :
    http://opfer/.bash_history
    http://opfer/.htaccess

Directory Traversal

Bei Angriffen über « Directoy Traversal » ( directory traversal oder path traversal) bestehen darin, die Struktur des Pfads in der URL zu verändern, um den Server dazu zu bringen, Bereiche der Seite anzuzeigen, auf die man keine Zugriffsrechte hat.

Ein klassischer Fall wäre, dass der User gezwungen ist, progressiv den Pfad hinaufzuverfolgen, vor allem, wenn die Ressource nicht zugänglich ist, zum Beispiel :

http://opfer/base/test/ascii.php3
http://opfer/base/test/
http://opfer/base/

Bei anfälligen Servern, kann man den Pfad einfach durch mehrere solche Ketten zurückverfolgen« ../ » :

http://opfer/../../../../verzeichnis/datei

bei fortgeschritteneren Angriffe werden bestimmte Zeichen codiert :

  • entweder durch URL Codierung :
    http://opfer/..%2F..%2F..%2Fverzeichnis/datei
  • oder durch Unicode Notation :
    http://opfer/..%u2216..%u2216verzeichnis/datei

Viele dynamische Seiten geben den Namen der anzuzeigenden Seiten in einer Form aus, die der folgenden ähnlich ist :

http://opfer/cgi-bin/script.cgi?url=index.htm

Sofern keine Kontrolle durchgeführt wird, kann ein Hacker die URL manuell verändern, um Zugang zu einer Ressource der Seite zu fordern, zu der er keinen direkten Zugang hat, beispielsweise :

http://opfer/cgi-bin/script.cgi?url=script.cgi

Gegenmaßnahmen

Um einen Server vor Angriffe per URL-Manipulation zu schützen, ist es nötig, über Schwachstellen am Laufenden zu bleiben und regelmäßig die Software-Patches herunterzuladen, die für den Server zur Verfügung gestellt werden.

Außerdem kann man durch eine genaue Konfiguration des Servers verindern, dass ein User auf Seiten navigiert, auf die er keinen Zugriff haben sollte. Der Web-Server sollte also entsprechend der folgenden Grundregeln konfiguriert werden :

  • Verhindern, dass auf Seiten navigiert wird, die unter dem Rootverzeichnis der Website liegen (Mechanismus des chroot) ;
  • Die Anzeige von Dateien verhindern, die in einem Verzeichnis liegen, das keine Index-Datei hat (« Directory Browsing ») ;
  • Löschen von Verzeichnissen und nicht benötigten Dateien (auch versteckte Dateien ;
  • Sicherstellen, dass der Server den Zugang zu Verzeichnissen mit heiklen Datein schützt ;
  • Überflüssige Konfigurationsoptionen entfernen ;
  • Sicherstellen, dass der Server dynamische Seiten korrekt interpretiert, darunter auch Sicherheitsdateien (.bak) ;
  • Überflüssige Script Interpreter löschen ;
  • Verhindern, dass Seiten, die über HTTPS zugänglich sind, im HTTP-Modus angezeigt werden.

Lesen Sie auch :


URL manipulation attacks
URL manipulation attacks
Ataques de manipulación de URL
Ataques de manipulación de URL
Attaques par manipulation d'URL
Attaques par manipulation d'URL
Attacchi da manipolazione d'URL
Attacchi da manipolazione d'URL
Ataques por manipulação de URL
Ataques por manipulação de URL
Das Dokument mit dem Titel « Angriffe per Manipulation der URL » aus CCM (de.ccm.net) wird zur Verfügung gestellt unter den Bedingungen der Creative Commons Lizenz. Sie dürfen das Dokument verwenden, verändern sowie Vervielfältigungen dieser Seite erstellen, unter den Bedingungen, die in der vorgenannten Lizenz erwähnt sind und unter der gleichzeitigen Bedingung, dass Sie im Rahmen Ihrer Verwendung, Veränderung oder Vervielfältigung nach außen hin klar und deutlich auf den Urheber (= de.ccm.net) des Dokuments hinweisen.