-: In diesem Vortrag
und den nächsten Vorträgen werden wir über eine Schwachstelle namens XSS sprechen.
XSS steht für Cross Site Scripting.
Diese Art von Sicherheitsanfälligkeit ermöglicht es
einem Angreifer, JavaScript in eine Seite einzuschleusen.
JavaScript ist also eine Programmiersprache.
Und mithilfe dieser Sicherheitsanfälligkeit könnte
ein Angreifer in JavaScript geschriebenen Code
auf einer bestimmten
Seite einer Website
ausführen.
JavaScript ist eine clientseitige Sprache.
Wenn der Code ausgeführt wird, wird er also
auf dem Client, dem Benutzer oder der
Person ausgeführt, die die Webseite durchsucht hat.
Es wird nicht auf dem
Server ausgeführt. Selbst wenn Ihr
Code dazu führt, dass Sie eine Reverse-Shell
erhalten, kommt die Shell von dem
Benutzer, der
die Seite durchsucht, und nicht von der Website.
Jeder Code, den Sie in JavaScript schreiben, wird also ausgenutzt oder
läuft auf dem Zielbenutzer, auf den
Personen, die die Seiten
sehen, und befindet sich nicht auf dem Webserver.
Der Webserver wird also nur dazu verwendet, den
Code auszuführen oder den Code zu liefern.
Es gibt drei Haupttypen von XSS-Schwachstellen:
Persistent oder Stored,
Reflected
und DOM-basiert.
Das gespeicherte XSS wird in der Datenbank gespeichert, sodass der
Code, den Sie einfügen, in der Datenbank oder auf der
Seite gespeichert
wird, sodass Ihr Code jedes Mal ausgeführt wird, wenn
jede Person diese Seite anzeigt.
Der reflektierte Code
wird nur ausgeführt, wenn
der Zielbenutzer eine von Ihnen erstellte oder
geschriebene bestimmte URL ausführt.
Sie manipulieren also eine Art URL und senden
sie an ein Ziel, und
wenn sie dieses Ziel
ausführen, wird der Code ausgeführt, wenn sie diese URL ausführen.
Die DOM-basierten Ergebnisse stammen aus JavaScript-Code, der auf dem Client
geschrieben wurde.
Der Code wird also tatsächlich auf
der Client-Seite interpretiert und
ausgeführt, ohne dass eine Kommunikation mit dem Webserver besteht.
Diese können sehr
gefährlich sein, da Webserver manchmal eine Art von Sicherheit und
Filterung anwenden, um nach XSS zu suchen.
Aber mit DOM basiert der Code nie an den
Webserver gesendet.
So wird der Code interpretiert und im Webbrowser
ausgeführt, ohne mit dem Webserver zu interagieren.
Und diese werden in Websites vorhanden sein, die
ihren Inhalt ohne Aktualisierung aktualisieren.
Wir haben also alle Websites verwendet, auf denen Sie beispielsweise
Ihren Benutzernamen
eingeben, und es
wird sofort geladen, ohne den Webserver überprüfen zu müssen, oder
Sie geben eine Art Zeichenfolge ein
und es führt eine Suche durch, ohne mit einem zu kommunizieren
Webserver oder tut etwas, ohne mit dem Webserver zu kommunizieren.
Wenn Sie also in das injizieren
können, wird diese Injektion nicht validiert, also
wird sie sofort ausgeführt und
alle Validierungen umgangen.