Neben den klassischen reflected XSS-Lücken sind DOM-based XSS-Lücken etwas schwieriger zu finden, aber dennoch häufig vertreten. Bei dieser Art der XSS-Schwachstelle befindet sich die Payload nicht direkt im HTML-Quelltext, sondern wird erst durch die Manipulation des DOM (Document Object Model) durch seiteninterne Skripte injiziert. In diesem Writeup eine derartige Lücke auf der Webseite der Deutschen Bank.
Mehr oder weniger durch Zufall bin ich auf folgende URL gestoßen:
https://www.deutsche-bank.de/pfb/data/oic/facebook.html?date=20201010
Bei Aufruf dieser URL befindet sich in Zeile 10 ein META-Tag, welcher nach 2 Sekunden auf Facebook leitet. Dies soll das Teilen von Beiträgen der Deutschen Bank ermöglichen.
Der Facebook-Link ist aber uninteressant. Da die Weiterleitung erst nach zwei Sekunden erfolgt, wird der Rest der Seite ganz normal geladen. Im Rest der Seite befindet sich nichts weiter als ein bisschen JavaScript. Dieses JavaScript erzeugt einen Tracking-Pixel auf der Seite.
Wie man sehen kann, wird ein Image-Tag <img>
in den Body der Seite geladen. Die URL des Source-Attributs src
setzt sich aus dem URL-Parameter date
zusammen (hier als parameterDate
-Variable). Durch die Verwendung eines Anführungszeichens, kann das src
-Attribut vorzeitig beendet werden, was das einschleusen beliebiger HTML-Attribute und Tags ermöglicht.
https://www.deutsche-bank.de/pfb/data/oic/facebook.html?date=20201010" onerror="alert(0)
https://www.deutsche-bank.de/pfb/data/oic/facebook.html?date=20201010"><svg onload="alert(document.cookie)
Responsible Disclosure Timeline
12.10.2020 – Meldung der Lücke an die Deutsche Bank – security.db(at)db.com
13.10.2020 – Deutsche Bank bestätigt den Eingang der Mail und leitet die Meldung zur Behebung an die zuständige Abteilung
12.12.2020 – Bisher wurde das Problem nicht behoben.
Die Sache mit dem Phishing
Banken die auch Online-Banking anbieten sind immer wieder von Phishing betroffen. Die Deutsche Bank gibt dazu einige Tipps, wie man sich davor schützen kann.
Woran erkenne ich, dass meine Internetverbindung sicher ist?
Quelle: https://www.deutsche-bank.de/pk/digital-banking/sicherheit/sicherheitsverfahren.html#parsys-accordion_copy-accordionParsys-accordionentry_21383
Eine sichere Internetverbindung können Sie u. a. an der Adresse erkennen. Beginnt sie mit „https“, so ist dies ein Symbol für eine sichere Verbindung (z. B. https://meine.deutsche-bank.de). Ein weiteres Signal ist das geschlossene Schloss in der Adresszeile Ihres Browsers.
Abgesehn davon, dass eine sichere Verbindung alleine keinen Schutz vor Phishing bietet, bleibt der Hinweis auf Phishing-Domains unerwähnt. Zumal diese XSS-Lücke nichtmal eine Phishing-Domain benötigt. Viel mehr bringt die Deutsche Bank das beachten des E-Mail-Absenders in den Vordergrund, welcher durch Mail-Spoofing in vielen Fällen manipulierbar ist.
Fazit
Leider hats die Deutsche Bank nicht geschafft, eine simple XSS-Lücke innerhalb von 60 Tagen zu beheben. Das ist nicht gut 🙁