Wie Du Dich ohne Passwort überall anmelden kannst – SQL Injection

SQL Injection Steffen Lippke Hacking SeriesEin Benutzername ist schnell gefunden.

Jetzt noch schnell das Passwort hacken?! Mit SQL-Injection.

Ich zeige Dir, wie Du Schwachstellen in Login finden und ausbessern kannst.

Hack I.T.

Aufgabe: „Universal-Passwort“ für ungeschützte Logins

Um was geht’s? – Thema

Unser Ziel ist es einen Zugang zu einem Konto zu schaffen, von dem wir weder Benutzername noch Passwort kennen. Dieses Tutorail zeigt eine Variante, wie man Lücken in einem Login finden kann.

Knappe Einordnung

Bei den meisten CMSs wie WordPress oder Foren ist SQL-Injektion nicht mehr möglich, da Schutzmechanismen in den PHP-Code standardmäßig implementiert sind.

Anfänger vergessen bzw. kennen diese Mechanismen nicht und programmieren eine zwar funktionalen, aber ungeschützten Login. In diesem Tutorial zeige ich Dir nicht nur, wie Du diese Sicherheitslücke findest, sondern auch, wie sich Webhoster gegen eine solche Attacke absichern können.

Wenige Zeilen Code machen eine großen Unterschied.

DAS. Sagen die Medien.

Mit dieser Technik könnte der Angreifer sich unter Verwendung einer Kontonummer oder eines Nutzernummer in jedes Bankkonto bzw. Nutzerkonto einloggen. Unbemerkt wäre es Ihm möglich Geld zu bewegen, so als ob es der wahre Besitzer des Kontos machen würde.

In 2012 hat Barclays ermittelt das 97% der Daten-Einbrüche von SQL-Injections stammen. Die Betrungskosten belaufen sich auf 2,7 Milliarden Euro. (Sophie Curtis

Grundlagen: Wie funktioniert der Login?

Login einfach erklärt

Eine Login auf einer Webseite funktioniert nach folgendem Schema:

  1. Der Nutzer gibt die Creditals (Passwort und Benutzername) in die Eingabe-Felder ein
  2. Das Formular übergibt die Anmeldedaten an eine loginPasswort-Script bei Klick auf Anmelden
  3. Die Anmeldedaten vergleicht eine SQL Befehl mit den Datensätzen in einer Datenbank mit den registrierten Accounts des Hosters. Die Datenbank hat zwei Möglichkeiten zu antworten:
    1. Account und Passwort gefunden: SQL-Befehl erfolgreich – positive Rückmeldung
    2. Account oder Passwort falsch: SQL-Befehl meldet nichts zurück oder auch Fehler

Praxis – Abfragen bei Datenbanken

Ein mögliche SQL-Befehl sieht so aus:

Hack IT: SQL Statements in Login

Spurensuche: Login-Namen finden

Ein Beispiel wie ein normaler Login von der Idee funktionieren sollte:Zuerst brauchen wir eine Namen. Diesen finden wir bei  jeden Kommentar oder Profil.

Ein Benutzername ist schnell gefunden
Ein Benutzername ist schnell gefunden
Eine Zufällige Login Page
Eine zufällige Login Page

Testen wir den Login Vorgang und sehen uns an, was übertragen wird.

Blick in den Code: Parameter übertragen

Mit dem gefunden Namen melden wir uns nun an und irgendeinem Kennwort. Kennwort und Benutzername überträgt der Browser per POST-Parameter an eine PHP-Skript.

Die Logindaten werden mit Parametern übertragen
Die Logindaten werden mit Parametern übertragen

ATTACKE! – Universalpasswörter

loginNutzer und loginPasswort sind die Variabelen, die das PHP-Script erhalten hat und fügt diese in den SQL Befehl ein. Der Trick ist eine Passwort zu generieren, welches die Prüflogik aushebelt:

11 Kostenlose Exklusive App Dev Tipps

Deine Mail für Zugang zu praxisnahe App Entwicklung Tipps zu erhalten

AND password = ‚loginPasswort

loginPasswort => ‚ OR ‚ ‚=‘
benutzername =’loginNutzer‘ AND password = “ OR ‚ ‚=‘ ‚

Der eingefügte String erzeugt eine neue Bedingung, die immer erfüllt sein wird. Die Verzweigung mit OR ermöglicht, dass nur 1 Bedinung erfüllt sein muss: ‚ ‚=‘ ‚ 

Werfen wir einen Blick auf einen ungeschützen Login, der „veraltet“ ist.

Ein ungeschützer normaler Login der anföllig auf SQL Injection ist
Ein ungeschützer normaler Login der anfällig auf SQL Injection ist
Mit eine universal Login kann man die Login Page umgehen
Mit eine universal Login kann man die Login Page umgehen

So einfach kann man in ein Konto eindringen, welches einem nicht gehört.

Erfolg wir sind in dem Account
Erfolg wir sind in dem Account

Jetzt könnte der Eindringling. Das Passwort ändern und sich ein eigenes aussuchen, sodass der wahre Besitzer auf das Konto nicht mehr zugreifen kann.

Probiere mal diesen ungeschützen Login auf SQLzoon aus. Hier kannst Du in den Login oben rechts Dich mit Nutzername „jake“ und als Universalpasswort ' OR ''='anmelden. Wenn Dir kein Nutzername bekannt ist, kannst Du das Universalpasswort als Nutzernamen nutzen.

 

Sicherung: Encode die Eingaben

Ziel ist es die Passworteingabe zu schützen. Die präperierten Strings könnte eine Skript mit eine If-Anweisung auffagen, aber der Hacker kann auch kreativer sein und noch eine paar mehr OR Iterationen einbauen.

Lösung für das Problem?

Sicherungsmaßnahme: Encoding!

Entweder verbietet der Login bei Sicherheitszeichen wie ‚, OR, AND oder alle Sonderzeichen konvertiert ein Statement zu einem harmlosen String, der das PHP-Skript in der Accounts-Datenbank abgespeichert kann.

PHP Statments können Strings vorbreiten, encoden und in die SQL-Abfrage einfügen:

Icons made by Gregor Cresnar from www.flaticon.com is licensed by CC 3.0 BY – Icons made by dDara from www.flaticon.com is licensed by CC 3.0 BY – Icons made by Icomoon from www.flaticon.com is licensed by CC 3.0 BY –Icons made by Those Icons from www.flaticon.com is licensed by CC 3.0 BY –

Sichere Dir den kompletten
Fundamental Ionic Course

Die kostenlosen Tutorials sind ein Ausschnitt
aus dem Fudamental Ionic Course by Steffen Lippke.

Schon 4832 erfolgreiche Absolventen

  • Code Downloads + umfangreiche Lösungen + Dateien für Grundlagen zum Coden
  • Visuelle Beschreibungen mit HD+ Screenshots und Hilfen
  • Steffen's Clean Code - Erweiterung - Verbesserungs - Tipps
 

100 h Kurslänge | 100 % Geld-Zurück-Garantie | Live-Support

 
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Schreibe einen Kommentar

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