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 :
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
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.
Ein Hacker könnte auf gut Glück verschiedene Verzeichnisse und Erweiterungen ausprobieren, um wichtige Informationen zu finden. Hier sind einige klassische Beispiele :
http://opfer/admin/ http://opfer/admin.cgi
http://opfer/phpinfo.php3
http://opfer/index.php3.bak
http://opfer/.bash_history http://opfer/.htaccess
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 :
http://opfer/..%2F..%2F..%2Fverzeichnis/datei
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
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 :