Logo faq-o-matic.net
Logo faq-o-matic.net

DOS-Angriff auf Webshop leicht gemacht

von veröffentlicht am18. Juli 2012, 06:42 Uhr Kurzlink und Zitatlink einblenden
Kategorie Kategorie: Sicherheit, Webserver   Translate with Google Translate Translate EN   Die angezeigte Seite drucken

Durch Zufall hat meine Tochter kürzlich ein Sicherheitsproblem in einem Webshop entdeckt. Dabei hat sie gar keine fortgeschrittenen Hacker-Methoden angewandt, sondern nur ein wenig auf der Webseite herumgeklickt. Es handelte sich um den Shop eines größeren Filialunternehmens, das Wohn-Accessoires und Möbel verkauft. Wie sich herausstellte, kann man dabei nicht nur lustigen Unsinn anstellen, sondern nebenbei auch sensible Informationen abfragen und sogar den Verkauf durch das Unternehmen empfindlich stören.

Das Problem, das diesen Angriff ermöglicht, liegt in einer fehlenden Plausibilitätskontrolle.

So ging es los

Am Anfang stand ein wenig Spielerei im Shopsystem. Statt eine übliche Anzahl der Produkte in den Warenkorb zu legen, trugen wir eine idiotisch große Zahl ein – beispielsweise 1000 Stück. Freimütig teilte uns der Shop mit, wie viele Exemplare denn derzeit am Lager waren. Das ist erst mal nicht verkehrt – aber nur, wenn der Bestand wirklich niedrig ist. Hier fehlte aber bereits die Kontrolle, und das System teilte uns auch mit, wenn es noch mehrere hundert Stück im Lager gab. So konnten wir also für jeden Artikel schnell herausfinden, wieviel davon der Anbieter gerade hatte.

image

Man nehme beispielsweise 100 Stück des Schranks für 900 Euro …

image

… und erfahre, wie viele Exemplare es denn wirklich gibt.

Will man solche Informationen wirklich an anonyme Besucher herausgeben? Vermutlich eher nicht. Das machte aber Lust auf mehr: Wenn wir große Stückzahlen teurer Produkte in den Warenkorb legen, kommen ja schöne Sümmchen zusammen. Wie weit kann man denn da wohl gehen?

image

Der Warenkorb wird ganz schön groß

Um es kurz zu machen: Der Shop scheint keine Begrenzung für den Warenkorb zu kennen. Jedenfalls war es uns mit ein wenig Geduld möglich, durch gezieltes Aussuchen teurer Produkte einen Wert von über einer Million Euro in unseren virtuellen Drahtwagen zu legen.

Der nächste Schritt

Auch dies weckt Begehrlichkeiten. Wenn ich einem Kunden die Bestellung über einen Warenkorb ermögliche, muss ich ihm die Artikel ja auch liefern können. Ab einem bestimmten Punkt muss ich also die bestellten Artikel für ihn reservieren, damit kein anderer sie ihm wegschnappt.

Und auch hier gibt es anscheinend keine Plausibilitätskontrolle. Es war uns möglich, unseren riesigen Warenkorb ohne Anmeldung mit erfundenen Namens- und Adressdaten zu bestellen. Das ging sogar ohne großen Aufwand, denn wir mussten nicht etwa eine Kreditkartennummer fälschen. Nein, es reichte aus, “Vorkasse” als Zahlungsform zu wählen und die Bestellung auszuführen. Die zugehörige Bestätigungsmail ging dann an die Mailadresse, die wir einfach erfunden hatten (und die es gar nicht gibt – der Shop hätte also sogar eine Fehlermeldung des Mailsystems auswerten können).

Nun prüften wir, ob andere potenzielle Kunden die Artikel denn noch auswählen können. Dazu reichte es aus, einen anderen Browser zu öffnen, denn wie die meisten Shops arbeitet auch dieser mit Cookies, um seine Besucher zu identifizieren. Cookies sind browserspezifisch, also erkannte der Shop den anderen Browser als neuen Besucher.

Tatsächlich konnten wir die reservierten Artikel nun nicht mehr auswählen.

image

Die Artikel gibt es zur Zeit nicht. Es stehen ja auch nur noch -zig davon im Lager …

Wir haben keine Geduld gehabt, um den Timeout des Systems zu überprüfen – irgendwann wird der Shop sicher davon ausgehen, dass der Kunde doch nicht bestellt hat und die Sperre aufheben. Vermutlich dauert das aber mehrere Stunden. Während dieser Zeit haben andere Kunden keine Möglichkeit, die Artikel zu kaufen. Das nennt man “Denial of Service”.

Was lernt uns das?

Dieser hochgradig triviale Angriff hätte durch wenige Plausibilitätskontrollen verhindert oder wenigstens in seinen Auswirkungen deutlich begrenzt werden können. Hier ein paar Tipps für den Shop-Betreiber:

  • Die Anzahl der Lagerstücke teilt man Kunden nicht mit, zumindest solange der Bestand nicht wirklich knapp ist.
  • Kein Kunde wird über einen Privat-Webshop größere Stückzahlen teurer und großer Artikel kaufen. Hier hilft es also, eine sinnvolle Mengenbegrenzung einzuführen.
  • Der Warenkorb eines Privatkunden sollte keinen astronomischen Umfang annehmen dürfen.
  • Ab einer gewissen Bestellgröße sollten Bestellungen nicht per Vorkasse möglich sein, wenn sie zu einer Sperre des Lagerbestands führen.
  • Adressdaten sollten bei einer Bestellung ebenfalls überprüft werden, zumindest auf grobe Fehler und offensichtliche Unstimmigkeiten (wie nicht existierende Mailadressen).

Wir haben den Shop-Anbieter von diesen Dingen in Kenntnis gesetzt, bevor wir diesen Artikel publiziert haben.

© 2005-2023 bei faq-o-matic.net. Alle Rechte an den Texten liegen bei deren Autorinnen und Autoren.

Jede Wiederveröffentlichung der Texte oder von Auszügen daraus - egal ob kommerziell oder nicht - bedarf der ausdrücklichen Genehmigung durch die jeweiligen Urheberinnen oder Urheber.

Das Impressum findet sich unter: http://www.faq-o-matic.net/impressum/

Danke, dass du faq-o-matic.net nutzt. Du hast ein einfaches Blog sehr glücklich gemacht!