Security Forum Usenet Archiv Mailing List Archive  
IDS Firewall Honeypot Honeynet Web Security Linux Security Microsoft Security Virus - Wurm Backdoors - Trojaner Links
I-EYE Security Exploits Security Dokumentationen Security Online Scanner Security Scanner Security Tools Trojaner Portliste Impressum

XSS Globale Variablen überschreiben






Unter PHP ist es nicht nötig Variablen zu deklarieren, das macht PHP automatisch und zwar wird eine Variable zum den Zeitpunkt deklariert wo sie zum ersten Mal benutzt wird. Das bedeutet dass eine Variable die im laufe eines PHP Dokuments verwendet wird, können wir diese schon vorher deklarieren und dieser Variable auch ein beliebiges Wert zuweisen in dem wir die Variable als Übergabeparameter an den PHP Dokument übergeben. Ein schönes Beispiel ist wenn der Besucher der Seite ein Benutzername und Passwort eingibt und an ein PHP Dokument geleitet wird welches diese eingaben überprüft.
Ausschnitt aus dem Dokument mit dem Eingabeformular:

<form action=./login.php>
<input name=user>
<input name=pass>
<input type=submit value=Login>
</form>

Nachdem der Besucher sein Benutzernamen und Passwort eingegeben hat und auf Login geklickt hat wird er weiter an den PHP Dokument login.php weitergeleitet. Die login.php vergleicht die Eingaben mit einer Benutzerdatenbank um zu ermittelt ob der User sich anmelden darf.
URL -> http://www.meine_domain/login.php?user=root&pass=geheim

Ausschitt aus login.php
<?php
 if($user == “root“ && $pass == “geheim“)
 {
  $login = 1;
 }
 if($login == 1)
 {
  echo “sie sind eingelogt”;
 }
?>
Wie man unschwer erkennen kann wird in der ersten if Schleife ermittelt ob die Benutzereingaben stimmen um sich einloggen zu können. Wenn die Eingaben richtig sind wird die Variable $login auf eins gesetzt. Da die Variable $login auf eins gesetzt wurde sind die Benuzereigaben richtig, also darf er in den geschützten Bereich hinein. Um die Passwortabfrage zu umgehen müssen wir bloß die Variable $login auf eins setzen.
URL -> http://www.meine_domain/login.php?login=1
Da wir kein Benutzernamen und Passwort übergeben wird der Vergleich fehlschlagen und die Variable $login wird nicht auf eins gesetzt aber das kann uns egal sein den wir haben die schon durch die Manipulation der Übergabeparameter auf eins gesetzt, das heißt wir sind Eingeloggt.

Einer der interessantesten Beispiele für die Überschreibung der globalen Variablen sind die Online Security Scanner oder Online Portscanner. Die kostenlosen Dienste scannen zurück das heißt es wird ein Scann auf die IP Adresse durchgeführt von der die Anfrage kam. Man kann also nicht fremde Server scannen. Damit ein PHP Seite weis welche IP Adresse sie scannen soll wird eine Umgebungsvariable REMOTE_ADDR abgefragt. Der Inhalt dieser Variable ist immer die IP Adresse von dem Client der diese Seite abfragt. Es existieren sehr viele solcher Umgebungsvariablen wie zum Beispiel HTTP_USER_AGENT (der Inhalt ist der Name des Browsers der auf dem Clientseite eingesetzt wird) oder HTTP_REFERER (von wo der User kommt). Den Inhalt der meisten interessanten Variablen manipuliert man am besten in dem man ein Browser simuliert.
Durch die Übergabe folgender Variable können wir den Scanner anweisen eine von uns bestimmte IP Adresse zuscannen und uns die Ergebnisse anzuzeigen.
URL -> http://www.online-scanner.de/nmap_scan.php?REMOTE_ADDR=123.123.123.123