Einführung
Hinter Anwendungssicherheit steckt ein sehr komplexer Prozess. Entscheidungsträger teilen oft nicht genug Ressourcen ein, um regelmäßig zu überprüfen, ob die Anwendung noch den bewährten Cybersicherheitsverfahren entspricht. Gravierende Schwachstellen im System zeigen sich häufig erst lange nach der Live-Schaltung. Damit dies im Unternehmen auffällt, muss es oft erst zu einem ernsten Sicherheitsvorfall kommen.
Unser Kunde ist verantwortlich für die Entwicklung und den Support einer Website mit Tausenden registrierten Benutzern. Laut eigener Aussage achtete das Entwicklerteam des Kunden von Anfang an besonders auf Sicherheit. Dennoch traten in jüngerer Vergangenheit mehrere verdächtige und unerklärliche Vorfälle in der Anwendung auf. Letztendlich entschied sich das Unternehmen, externe Experten zu Rate zu ziehen. Da noch nie ein Penetrationstest der Website durchgeführt worden war, schlugen wir vor, damit zu beginnen.
Das Team von Boltonshield verfügt über langjährige Erfahrung mit Anwendungssicherheitstests auf verschiedenen IT-Systemen. Zu unserem Angebot zählen auch professionelle Beratungsleistungen und Schulungen zu diversen Themen in verschiedenen Bereichen der IT-Sicherheit. Im Laufe der Jahre haben wir viele wertvolle Erfahrungen gesammelt und freuen uns immer, wenn wir unsere Kunden mit unserem Know-how unterstützen können.
Alle technischen Daten in der Beschreibung (Screenshots, Scriptausgaben, Parameter) wurden geändert, um die Anonymität unseres Kunden zu wahren.
Erste Eindrücke
Zu Beginn der Tests formte sich der Verdacht, dass wir auf gravierende Probleme stoßen könnten. Einige der Anzeichen die darauf hindeuteten:
- Eine Anwendung verwaltet sensible Daten von Tausenden Benutzern aber es wurde noch nie ein Pentest durchgeführt.
- Individuelle Softwarelösung mit kundenspezifischem Quellcode für höhere Sicherheit.
- Die Anwendung des Prinzips »Sicherheit durch Obskurität« kann oft ein übersteigertes Sicherheitsgefühl mit sich bringen.
Befürchtungen bestätigt
Der erste Schritt bei der Analyse des Sicherheitsniveaus einer Webanwendung ist die Aufklärung sowohl für die Anwendung, die getestet werden soll, als auch für die zugehörigen Ressourcen (Dateien und Verzeichnisse). Dabei können die automatisierten Tools (durch Senden/Empfangen Tausender Anfragen pro Minute) ganz einfach Pfade ausfindig machen, die die Entwickler der Anwendung ursprünglich verbergen wollten. Einige Minuten nach Testbeginn hatten wir bereits mehrere potenziell gefährdete Pfade entdeckt:
Wir setzten die Anwendungssicherheitstest auf der internen/Admin-/Anmeldeseite fort, die auf die Anmeldeseite zur Administrationsoberfläche führte.
Neben den Tests, die von automatisierten Tools ausgeführt werden, legen wir auch immer großen Wert auf manuelle Tests. Dadurch können im Allgemeinen auch die Schwachstellen aufgedeckt werden, die andernfalls, ohne die Einblicke eines Experten, verborgen bleiben.
Auch in diesem Fall sorgten die manuellen Tests für den Durchbruch. Basierend auf den Tests durch die automatisierten Tools stellten wir fest, dass der Anmeldevorgang nicht gegen automatisierte Passwort-Rate-Angriffe geschützt ist. Andere gravierende Probleme wurden in dieser Testphase jedoch noch nicht aufgedeckt.
Im Laufe der manuellen Tests stellte sich sofort heraus, dass die Anwendung nach fehlgeschlagenen Anmeldeversuchen eine ausführliche Fehlermeldung anzeigt, aus der hervorgeht, ob der jeweilige Benutzername gültig ist.
Derartigen Schwachstellen begegnen wir bei unserer Arbeit ziemlich häufig. Diese Fehlermeldung kann genutzt werden, um festzustellen, welcher Benutzername im System gültig ist, sodass ein Hacker durch automatisierte Anfragen leicht die Anmeldenamen von Administratoren des Systems herausfinden kann. Dieses Problem mag zunächst vernachlässigbar erscheinen, doch wir kommen bald zu den schwerwiegenden Folgen die es mit sich bringen kann.
Im Verlauf der weiteren Tests wurde deutlich, dass der Anmeldeprozess zwar nicht durch die »traditionellen« Methoden der SQL Injection oder SQL-Einschleusungen gefährdet, aber dennoch einfach zu knacken war. Grund dafür war, dass die Entwickler es versäumt hatten, die Verfahren, welche dafür sorgen, dass die vom Benutzer eingegebenen Daten bereinigt werden, richtig zu implementieren. Die Anwendung entfernte nicht das SQL-Steuerzeichen aus dem Benutzernamen. Dabei handelte es sich um das Zeichen %. Gemäß unserer Erfahrung ist dies ein häufiger Fehler, der nur zu einer Gefahr wird, wenn bestimmte logische Operatoren eingesetzt werden. Bei der Aufdeckung von Schwachstellen spielte es auch eine wichtige Rolle, dass die Anwendung wie zuvor dargestellt bei fehlgeschlagenen Anmeldeversuchen in einer Fehlermeldung preisgab, ob der verwendete Benutzername gültig ist.
Üblicherweise bewertet die Anwendung den Anmeldeversuch als erfolgreich, wenn der eingegebene Benutzername gültig ist und das eingegebene Passwort mit dem Passwort übereinstimmt, das in der Datenbank für den Benutzer gespeichert ist. Wenn in diesem Fall jedoch »%« als Benutzername eingegeben wurde, führte dies dazu, dass die erste Bedingung immer als erfüllt galt und die Anmeldung war erfolgreich, wenn das eingegebenen Passwort mit dem Passwort irgendeines Benutzers in der Datenbank übereinstimmte.
Zusammengefasst heißt das, wenn man ein schwaches Passwort in Verwendung ausfindig macht, erhält man allein durch Eingabe dieses schwachen Passworts Zugriff auf die Administratoroberfläche.
Im nächsten Schritt starteten wir einen Angriff, bei dem wir immer % als Benutzernamen verwendeten und versuchten uns mit verschiedenen häufig genutzten schwachen Passwörtern anzumelden. Diese Art des Angriffs war aufgrund der zuvor erwähnten Schwachstelle möglich, die eine automatisierte Anmeldung zulässt.
In nur wenigen Minuten gelangen uns mehrere gültige Administratorzugriffe, einer davon mit der Berechtigung »system admin«.
Dank der Admin-Anmeldedaten konnten wir auf alle Funktionen im Administrator Panel zugreifen. Somit übernahmen wir praktisch komplett die Kontrolle über das System und erhielten zusätzlich Zugriff auf die Daten von Tausenden Benutzern der Anwendung. Wir hätten die Daten auslesen und modifizieren können.
Sofortmaßnahmen
Wir informierten den Kunden schnellstmöglich über die entdeckten Schwachstellen, denn im Falle solch gravierender Sicherheitslücken ist es von größter Wichtigkeit, sofort entsprechende Maßnahmen einzuleiten.
Nach einer anschließenden Analyse der Anwendungssicherheit und insbesondere der Protokolldateien bestätigte sich auch, dass diese Schwachstelle in der Vergangenheit bereits mehrfach angegriffen worden war und die zuvor erwähnten verdächtigen Vorfälle konnten damit in Verbindung gebracht werden.
Unser Kunde begann praktisch sofort mit der Ausführung des von uns vorgeschlagenen detaillierten Aktionsplans. Schließlich trug dieser auch wesentlich zu einer schnellen Beseitigung der Schwachstellen bei.
Was passierte danach?
Die Tests der Anwendungssicherheit wurden fortgesetzt und wir konnten noch weitere gravierende Sicherheitslücken aufdecken. Wir präsentierten unserem Kunden die Ergebnisse in einem ausführlichen Bericht. Nach Behebung der erkannten Probleme führten wir erneut Tests durch, um sicherzustellen, dass die zuvor identifizierten Schwachstellen tatsächlich beseitigt worden waren und wir überprüften, ob neue Schwächen aufgetreten waren.
Nach Abschluss der Anwendungssicherheitsanalyse trafen wir mit unserem Kunden eine Vereinbarung zum erneuten Testen der Webanwendung in festgelegten regelmäßigen Abständen. Dem Feedback zufolge führte die gemeinsame Arbeit in diesem Jahr dazu, dass die früher entdeckten verdächtigen Aktivitäten aufhörten und der allgemeine Standard des Dienstes sich deutlich verbesserte.
Wir fühlten uns besonders geehrt, als uns der Kunde bat, ihn bei einer neuen Anwendung zu unterstützen. Das gab uns die Gelegenheit, Probleme die im Laufe der Entwicklung entstehen, schon zu erkennen, bevor es zu schwerwiegenden Folgen kommen kann. Es ist unseren gemeinsamen Bemühungen zu verdanken, dass der Kunde auf höchst kosteneffiziente Weise eine Anwendung entwickeln konnte, die bewährten Sicherheitsverfahren entspricht.
Treten Sie mit uns in Kontakt, um herauszufinden, wie Boltonshield auch Ihrem Unternehmen helfen kann.