Gespeichertes DOM XSS

Apr 07 2023
Erkennen und Beheben einer kritischen Sicherheitslücke
Ich habe beim Testen der Webanwendung eine Stored DOM XSS-Schwachstelle gefunden. Die Online-Anwendung verfügt über einen Bereich, in dem Benutzer Daten eingeben können, die in der Datenbank gespeichert und auf nachfolgenden Seiten angezeigt werden, auf denen sich die Schwachstelle befindet.
Screenshot vom Autor

Ich habe beim Testen der Webanwendung eine Stored DOM XSS-Schwachstelle gefunden. Die Online-Anwendung verfügt über einen Bereich, in dem Benutzer Daten eingeben können, die in der Datenbank gespeichert und auf nachfolgenden Seiten angezeigt werden, auf denen sich die Schwachstelle befindet.

Ein Angreifer kann diesen Fehler ausnutzen, um beliebigen Code im Browser des Opfers auszuführen und möglicherweise vertrauliche Informationen zu stehlen oder den Computer des Opfers vollständig zu kompromittieren.

Wenn ein Benutzer eine sorgfältig konstruierte Eingabe in ein Feld eingibt, das auf nachfolgenden Seiten des Programms erscheint, wird die Schwachstelle aktiviert.

Die Eingabe wird nicht ausreichend bereinigt, bevor sie in der Datenbank gespeichert und auf nachfolgenden Websites angezeigt wird, sodass ein Angreifer beliebigen HTML- und JavaScript-Code einfügen kann.

Dieser Code wird dann vom Browser des Opfers ausgeführt, wenn es auf die anfällige Website zugreift, wodurch der Angreifer vertrauliche Daten stehlen oder Aktivitäten im Namen des Opfers ausführen kann.

Schritte zum Reproduzieren:

  1. Melden Sie sich als normaler Benutzer bei der Webanwendung an
  2. Navigieren Sie zu dem Abschnitt, in dem Daten eingegeben und in der Datenbank gespeichert werden
  3. Geben Sie die folgende Payload in ein Textfeld ein:
  4. "><img src="x" onerror="alert(1)">
    

6. Die Warnmeldung „1“ wird angezeigt.

Konzeptioneller Beweiß:

Hier stelle ich ein Labor zum Üben von gespeichertem dom xss zur Verfügung.

Auswirkung:

Diese Schwachstelle kann von einem Angreifer ausgenutzt werden, um sensible Daten wie Benutzerpasswörter, Sitzungstoken und private Daten abzurufen.

Sie können damit nicht nur Geld überweisen, nicht autorisierte Einkäufe tätigen oder Kontoeinstellungen im Namen des Opfers ändern, sondern auch, um dies zu tun. Da sie einem Angreifer vollen Zugriff auf das Konto des Opfers gewährt, hat diese Schwachstelle schwerwiegende Folgen.

Empfehlungen:

  • Bereinigen Sie alle Benutzereingaben, bevor Sie sie in der Datenbank speichern oder auf anderen Seiten der Anwendung anzeigen.
  • Implementieren Sie Content Security Policy (CSP)-Header, um die Ausführung von Inline-Skripts zu verhindern und die Quellen externer Skripts einzuschränken.
  • Führen Sie regelmäßige Sicherheitsbewertungen der Webanwendung durch, um andere Schwachstellen zu identifizieren und zu beheben.