13607_ [德语] XSS-跨站点脚本-AIX Papers Exploit.txt

详情

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*******************************************************
#                      WEBSECURITY DOCUMENTATION                                   #
#                      --------------------------------------                                    #
#                           XSS - Cross Site Scripting                                         #
#                      --------------------------------------                                    #
#                                                                                                         #
#                                                                                                         #
#  written by fred777 [fred777.de]                                                          #
#                                                                                                         #
******************************************************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  --[0x00]-- Intro  --[0x01]-- Searching Vulnerabilities
 [1] POST Parameter
 [2] GET Parameter  --[0x02]-- Exploiting
 [1] Simple XSS
 [2] Close Tags
 [3] Event Handler
 [4] Javascript Verweis
 [5] Javascript Code Injection  --[0x03]-- XSS Tipps und Tricks
 [1] Badwords
 [2] String.fromCharCode
 [3] Obfuscation  --[0x04]-- Countermeasures and more:
 [1] Vuln Script
 [2] Schließen der Lücke  --[0x05]-- Finito  ********************************************************
##################################################  --[0x00]-- Intro  Willkommen zu meinem Paper über Cross Site Scripting. Ich werde hier erklären
was XSS überhaupt ist und wie es entsteht.  Cross Site Scripting Bugs entstehen dadurch, wenn z.B. in PHP übergebene
Parameter nicht auf spezifische Eingaben hin gefiltert werden. So kann wie
schon gesagt Javascript-Code ausgeführt werden, was bis zum XSS Wurm hin
schädlich für den User sein kann. Auf die Parameter und zu einem Beispielscript werde
ich später kommen. Es ist allerdings nicht schlecht sich schonmal mit PHP auseinandergesetzt
zu haben.  ########################################################################  --[0x01]-- Searching Vulnerabilities  Als erstes brauchen wir mal eine Lücke um besser verstehen zu können,
die findet ihr entweder selber oder ihr benutzt einen Scanner.
Da es bei XSS erstmal nicht um PHP Funktionen geht sondern um übergebene
Variablen, suchen wir also eine Stelle in einem Script wo der User Zugriff hat und
eigenen Text einführen kann. Ganz typisch dafür ist die Suchfunktion bei vielen
Webseiten. Natürlich ist dies theoretisch in allen Eingabebereichen möglich...  -------------------------------------------------------
 [1] POST Parameter
-------------------------------------------------------  POST-Parameter:  Wir haben also eine Seite gefunden welche mittels des $_POST Parameters
nach Eingaben sucht. D.h. es wird nichts über die URL übergeben, wir sehen
nur die Reaktion des Scripts auf unsere Anfrage.
Wir geben ein normalen Buchstaben ein "a" und finden einige Ergebnisse
Soweit so gut, jetzt schauen wir mal wie es im Quelltext aussieht, und ob unsere Eingabe
da vorhanden ist, wir finden unser a letztendlich hier:

Die Suche nach a lieferte 2 Ergebnisse.

Nicht immer muss unsere Eingabe direkt erscheinen, öfters auch im Quelltext versteckt, es bietet sich also an, ein ungewöhnliches Wort zu übergeben und nach diesem dann zu suchen: ------------------------------------------------------- [2] GET Parameter ------------------------------------------------------- GET-Parameter: Selbstverständlich kann so eine Übergabe von Werten genauso gut auch mittels des GET-Parameters stattfinden. Über den Cookie natürlich theoretisch auch, allerdings ist das eher selten. Ihr sucht einfach Stellen wo ein Parameter in der URL übergeben wird, oft auch nach dem Eingeben des Suchtextes. Bsp: www.seite.de/index.php?id=4 www.seite.de/index.php?cat=lalala Haben wir derartige Parameter gefunden, können wir zum nächsten Schritt übergehen und schauen wie wir dies ausnutzen könnten. ######################################################################## --[0x02]-- Exploiting ------------------------------------------------------- [1] Simple XSS ------------------------------------------------------- Greifen wir das obige Beispiel gerade mal auf:

Die Suche nach a lieferte 2 Ergebnisse.

Würden die Eingaben nicht gefiltert werden, könnten wir auch HTML injizieren: Suche nach:

fred

Nun sollte fred groß erscheinen und der Quelltext valid sein:

Die Suche nach

fred

lieferte 0 Ergebnisse.

Mit HTML lassen sich zwar schöne Spielereichen durchführen, doch Javascript ist effizienter, als Beispiel ein einfaches Script: Suche: Ein Popup wird aufbloppen, jeder kann sich denken, dass ein Popup lange nicht alles ist was Javascript ermöglicht.. ------------------------------------------------------- [2] Close Tags ------------------------------------------------------- Nicht immer erscheint die Eingabe so, dass eine simple HTML Injection möglich ist, oft muss man noch Feinarbeiten machen, desöfteren erscheint die Eingabe nämlich direkt im Input-Tag: Hier würde eine obige Injection nicht stimmen, deshalb muss der Tag erst geschlossen werden mit "> und gegebenenfalls der Rest mit Comments weggefiltert: ">