In Webformularen finden sich häufig Felder, bei denen die eingegebenen Daten nicht validiert werden. Dies ist ein gefundenes Fressen für Angreifer, die Buffer-Overflows oder SQL Injection einsetzen wollen. Zum Testen kann man im Texteditor einfach einen Text mit mehr als 500 Zeichen erstellen, diesen dann ausschneiden und in das Passwortfeld kopieren. Wo das System den Eingabe-String nicht begrenzt, werden Systeme häufig hängen bleiben oder abstürzen.
Als nächstes kann man die Validierungsregeln dadurch testen, dass man eine Bedingung, die immer als wahr evaluiert wird (z.B. OR „x“=“x“), einfügt, indem man diese an das Passwort-Feld anhängt. Viele Systeme können so manipuliert werden, dass sie Unautorisierten Zugang gewähren. Dies liegt an der Konstruktion von SQL-Ausdrücken. Wenn man eine „OR TRUE“-Bedingung anhängt, kann man das System überlisten. Hier ein Beispiel für einen SQL-Ausdruck, der auf diese Weise manipuliert werden könnte:
Select userid, passwd from USERS where userid = :uid_entered and passwd = pwd_entered
Man stelle sich vor, der Benutzer hätte admin in das userid-Feld und password OR „x“=“x“ in das Passwort-Feld eingegeben. Daraus würde der folgende SQL-Ausdruck werden:
select userid, passwd from USERS where userid=admin and passwd=password OR „x“=“x“
Das ist wahrscheinlich nicht das, was der Entwickler im Sinn hatte.
Der Schlüssel liegt unter der Fußmatte
Es ist außerdem erstaunlich, wie häufig System-Accounts für einfache Anmeldungen bei Anwendungs-Datenbanken verwendet werden. Viele Web-Anwendungen speichern Anmeldeinformationen (d.h. Benutzernamen und Passwörter) in ihrer eigenen Anwendungs-Datenbank. Da man sich bei der Datenbank anmelden muss, um seine Anmeldeinformationen zu validieren, handhaben die meisten Systeme die Validierung mithilfe eines so genannten „Vor-Validierungs-Anmelde-Kontos“. Bspw. meldet sich das System als „admin/admin“ an und stellt sicher, dass es in der Datenbank einen Benutzer samt Passwort gibt, der den Benutzereingaben auf der Website entspricht.
Bemerkenswerterweise sind solche Konten fast ausnahmslos vom Typ „admin“ mit umfangreichen Berechtigungen innerhalb der Anwendung. Noch gefährlicher wird diese Praxis, wenn man bedenkt, dass die entsprechenden Passwörter entweder in einer Textdatei im Stammverzeichnis der Website gespeichert oder direkt in die Startseite integriert sind, damit die Web-Anwendung Zugriff auf die Passwörter für diese Konten hat. In beiden Fällen kann ein böswilliger Benutzer äußerst einfach an das Passwort gelangen. Diese Praxis ist fast so, als ob man den Hausschlüssel unter der Fußmatte versteckt oder den Ersatzschlüssel fürs Auto auf der Sonnenblende. Es ist ein großer Fehler, der das Eindringen in eine Web-basierte Anwendung zu einem Kinderspiel macht.
Neueste Kommentare
Noch keine Kommentare zu Zehn häufige Sicherheitslücken bei Web-basierten Anwendungen
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.