XSS-Schwachstellen werden bei Penetrationstests in Single-Page-Web-Anwendungen gefunden, da dort viel Business Logik durch JavaScript im Front End existiert.
Cross Site Scripting (XSS) ist eine Art client-seitiger Injektion-Angriff, bei dem ein bösartiges Skript in eine legitime Website injiziert und dort ausgeführt wird. Ein Angriff beginnt, wenn der Benutzer die Website mit dem bösartigen Code besucht. Dieser Blogpost soll eine XSS-Definition darlegen und aufzeigen, dass eine XSS-Schwachstelle ein hohes Risiko für die IT-Organisation darstellt, wie auch die OWASP Top Ten und das Common Vulnerability Scoring System (CVSS) beschreiben.
XSS-Schwachstellen werden immer öfter im Rahmen eines Penetrationstests in Single-Page-Web-Anwendungen (SPA) gefunden, da dort viel Business Logik in Form von Java Script (JS) in das Front End verlegt wird. XSS-Vulnerabilities sind wahrscheinlich die heutzutage am weitesten verbreitete Schwachstelle für Web-Anwendungen mit hohem Risiko, wie unsere Pentester immer wieder feststellen dürfen. Selbst in API Calls werden öfter diese Angriffsvektoren gefunden. Uns ist es wichtig, dass alle IT-Stakeholder verstehen, dass diese Art von Schwachstelle zurecht mit einer hohen Kritikalität bewertet wird und nicht vernachlässigt werden sollte. Entsprechend wird diese Schwachstelle auch im OWASP Testing Guide mit einem Testfall beschrieben.
Reflektierte XSS-Angriffe, auch als nicht-persistente Angriffe bekannt, treten auf, wenn ein bösartiges Skript von einer Web-Anwendung in den Browser des Opfers injiziert wird. Das Skript wird über einen Link aktiviert, der eine Anfrage an eine Website mit einer XSS-Schwachstelle sendet, die die Ausführung von bösartigen Skripten ermöglicht. In diesen Payload kann beliebiger Java Script Code ausgeführt werde
Persistentes XSS, auch bekannt als stored XSS, ist die gefährlichere Schwachstelle. Es tritt auf, wenn ein bösartiges Skript direkt in eine anfällige Web-Anwendung injiziert wird. Somit wird der Schadcode immer ausgeführt, wenn das Opfer die Webseite benutzt und funktioniert ohne Benutzerinteraktion.
DOM-basiertes XSS bedeutet, dass eine Cross-Site-Scripting-Schwachstelle im DOM (Document Object Model) injiziert wird und nicht in einem Teil des HTML erscheint. Bei reflektierenden und gespeicherten Cross-Site-Scripting-Angriffen können Sie die Nutzlast der Schwachstelle auf der Antwortseite sehen, aber bei DOM-basierten Cross-Site-Scripting sind der HTML-Quellcode und die Antwort des Angriffs exakt gleich, d.h. die Nutzlast kann nicht in der Server-Antwort gefunden werden. Sie kann nur zur Laufzeit oder durch Untersuchung des DOM der Seite beobachtet werden. Im Gegensatz zu den oben genannten gängigen XSS-Varianten ist hier die Webapplikation auf dem Server gar nicht beteiligt.
Mit diesen Schwachstellen können folgende praktische Angriffsszenarien abgebildet werden, um das tatsächliche Risiko von Cross-Site-Scripting-Schwachstellen nachzuweisen. Diese Vektoren befinden sich nicht in einem vertretbaren Business Risk und müssen nach der Erkennung durch einen XSS-Pentest schnell ausgemerzt werden.
Mit bösartigem JavaScript im Browser des Opfers können folgende Angriffe realisiert werden:
BeEF ist die Abkürzung für The Browser Exploitation Framework. Es ist ein Werkzeug für Penetrationstests, das sich auf die Ausführung von Schadcode im Webbrowser konzentriert, jedoch nicht für die XSS-Erkennung zuständig ist.
Angesichts der wachsenden Besorgnis über webbasierte Angriffe auf Clients, einschließlich mobiler Clients, ermöglicht es BeEF dem professionellen Pentester, die tatsächliche Sicherheitslage einer Zielumgebung anhand von Angriffsvektoren auf der Client-Seite zu beurteilen. Im Gegensatz zu anderen Frameworks blickt BeEF über den gehärteten Netzwerkrand und das Client-System hinaus und untersucht die Ausnutzbarkeit im Kontext des Webbrowsers. BeEF verbindet einen oder mehrere Web-Browser und nutzt sie als Brückenkopf, um aus dem Kontext des Browsers heraus gezielte Befehlsmodule und weitere Angriffe auf das System zu starten. Dieses Tool findet neben einem Pentest auch beim Red Teaming große Anwendung und wird dort für das Network Lateral Movement benutzt.
Im folgenden wird das Tool bei einer Angriffssimulation vorgestellt:
Kontrolle über Webbrowser mit BeEF übernehmen [Tutorial]
Schwachstellen dieser Art haben kein akzeptierbares Risiko, sind nicht mit einem normalen Business Risk vereinbar und sollten dringend nach dem Pentest-Ergebnis gefixt werden. Eine konsequente IT-Sicherheit für die Webdienste kann mit regelmäßigen Pentests erfolgen, da XSS-Angriffe zu den kritischen Angriffsmöglichkeiten eines jeden Cyberkriminellen gehören. Sensible Daten, wie Browser-Sessions, können erbeutet werden oder komplexe Social-Engineering-Angriffe können hier ihren Startpunkt finden, um weitere Angriffe in die tiefergehende IT-Infrastruktur auszuführen. Jeder Input-Parameter muss gründlich geprüft werden, um eine hohe und vertretbare Web-Anwendungssicherheit zu erlangen!
Vereinbaren Sie ein unverbindliches Erstgespräch mit einem unserer Vertriebsmitarbeiter. Nutzen Sie den folgenden Link, um einen Termin auszuwählen: