Pizzeria-Berechnung: Papa Jones, der sich nicht um Sicherheit kümmert

Bild

Das Bild, um Aufmerksamkeit zu erregen, ist hier aufgenommen.

Papa Jones Pizzeria ist in vielen Ländern geöffnet, die Site Engine ist fast überall anders. Der Motor, der irgendwo in Russland entwickelt wurde, wird aber auch an Standorten in Polen, Kirgisistan und Weißrussland eingesetzt. Wir werden darüber nachdenken.

Sie können die Engine selbst beispielsweise auf einer mobilen Website für Russland sehen . Warum mobil? Weil der Desktop nicht einmal ein Registrierungsformular hat, obwohl dies durch die Tatsache erklärt wird, dass die Registrierung bei der Bestellung automatisch erfolgt. Ich habe mich einmal entschlossen zu überprüfen, wie die Dinge dort mit Schwachstellen sind.

Da das Auswählen von Anwendungen der einfachste Weg ist, habe ich es gewählt. Zu meiner Überraschung stellte ich fest, dass die Anwendung nur ein seltsamer Wrapper für die Site ist, obwohl der Server auch klar unterscheiden kann, von wem die Anfrage während der Anfragen kam. Es stellte sich heraus, dass sowohl die Anwendung als auch die mobile Version mit gleichem Erfolg getestet werden konnten. Der einzige Unterschied besteht darin, dass das plattformmobSite-Feld für die mobile Site übertragen wird und Anwendungen das System und die Version informieren.

Ich habe sofort Erfolg gehabt, weil ich mit der Passwortwiederherstellung begonnen habe. Ich schlage einen Blick darauf vor, wie dies geschieht.

Zuerst müssen Sie den Code selbst in SMS erhalten. Wir werden nach dem Link mit JSON im Body fragen:

POST https://www.papajohns.ru/api/auth/recovery/requestCode { "username": "+79", "transport": "sms", "lang": "ru", "version": "1.0.34", "platform": "Android" } 

Der Server antwortet:

 { "status": true } 

Seltsam, es gibt wenig Daten. Zumindest eine Kennung oder Sitzung, aber schauen Sie weiter.

Ein vierstelliger Code kommt zu SMS (nur Zahlen). Wir werden es nicht senden, da das Ändern des Passworts Punkte für zwei Wochen blockiert, aber ich hatte Pläne für sie. Versuchen wir, zufällig zu senden:

 POST https://www.papajohns.ru/api/auth/recovery/updatePassword { "code": "1234", "password": "123456qwe", "transport": "sms", "version": "1.0.34", "platform": "Android" } 

Ich war sehr beeindruckt. Es stellte sich heraus, dass beim Anfordern von SMS die Telefonnummer + der Code in SMS in die Datenbank geschrieben wird und wenn Sie die Wiederherstellung per Code anfordern, der Server nach dem Code in der Datenbank sucht und, falls der Code gefunden wird, das empfangene Kennwort für die Datenbank festlegt.

Die Situation verschlechtert sich, da die Code-Aufzählung nicht eingeschränkt ist. Empirisch fand ich heraus, dass das Skript in 10 Minuten garantiert ein Passwort festlegt. Und wenn Sie eine Wiederherstellung für alle 10.000 Codes von 0000 bis 9999 anfordern?

Am 12. Mai habe ich alle Details direkt dem Site-Entwickler gemeldet (zumindest hat er sich ihnen vorgestellt). Am 19. Juni interessierte mich, wie die Sicherheitslücke geschlossen wird. Das Skript schickte ungefähr dreihundert Anfragen und stand auf. Nachdem ich den Status des Entwicklers überprüft hatte, stellte ich fest, dass der Server jetzt per IP blockiert, wenn er 5 falsche Anforderungen empfängt. Heute habe ich noch einmal überprüft, ob sich die Logik geändert hat, und bin bereit zu berichten: Sie hat sich nicht geändert. Der Server ist jetzt auch gleichgültig: Ich habe 3.000 Anfragen ohne allzu große Schwierigkeiten gesendet, sodass alle 10.000, glaube ich, ohne Probleme abreisen werden.

Die Gefahr, alle gespeicherten Adressen nur durch das Vorhandensein einer Mobiltelefonnummer preiszugeben, bleibt erheblich. Bankkarten werden gelöscht, wenn das Passwort zurückgesetzt wird. Ich habe 1000 Punkte und Pizza. Die Pizza ist köstlich, aber ich werde die Adresse dort nicht speichern.

Source: https://habr.com/ru/post/de418611/


All Articles