Tryption.ch

Pentesting & Consulting

XSS auf der Loginseite der Supercard-ID

Auf supercard.ch befand sich bis vor kurzem eine Sicherheitslücke, die es ermöglichte, sehr authentische Phishing-Links zu erstellen. Die Schwachstelle befand sich auf der Loginseite der Supercard ID. Diese ID verknüpft alle Coop-Dienste untereinander und lässt sich unter anderem auch zur Zahlung verwenden; die Angriffsfläche ist entsprechend gross.

Technische Details

Bei der Sicherheitslücke handelte es sich um sogenanntes Reflected Cross-Site-Scripting (XSS). Diese Lücke entstand, da die Webapplikation den Link (inklusive aller Parameter) auf der Website ausgibt, ohne die Eingabe zu filtern oder zu encoden.

So liess sich schliesslich Javascript auf die Website einschleusen:

https://login.supercard.ch/cas/login?locale=de&service=https://www.supercard.ch/de.html";></script><script>alert("xss")</script><script>

Durch das Importieren eines Scripts konnte man alle Eingaben, die auf der Seite gemacht werden (in diesem Fall Benutzername und Passwort) stehlen. Ein solcher Link ist relativ unauffällig und von Laien nur schwer zu erkennen.

Meldung an supercard / Coop

Coop hat die Lücke über einen Monat lang nicht (korrekt) behoben und mehrere schriftliche und telefonische Anfragen ignoriert. Erst nach einer Meldung bei GovCert.ch wurde durch eine Web-Application-Firewall installiert, die die Sicherheitslücke jedoch auch nicht behob. Die Schutzfunktion liess sich problemlos mit folgendem Payload umgehen:

'}; self['alert']('xss'); var utag_data1 = { 'key':'value

Und über folgende URL ausnutzen:

https://login.supercard.ch/cas/login?locale=de&service=https://www.supercard.ch/de.html%27%7D%3B%20self%5B%27alert%27%5D%28%27xss%27%29%3B%20var%20utag_data1%20%3D%20%7B%20%27key%27%3A%27value

Nach einer weiteren Meldung an Coop (jedoch nicht direkt) wurde die Lücke schliesslich behoben. Insgesamt hat Coop für die Behebung über einen Monat benötigt.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.