SQL Injection - Umgehen der Anmeldung: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 41: Zeile 41:
  
 
*Nach Anklicken des Buttons Login ist man als Benutzer admin angemeldet.
 
*Nach Anklicken des Buttons Login ist man als Benutzer admin angemeldet.
*Der Grund, dass man als Admin angemeldet ist, liegt in der Struktur der Anwendung, da der Benutzer admin als erster Eintrag in der entsprechenden Tabelle steht.
+
*Der Grund, dass man hier als Admin angemeldet ist, liegt in der Struktur der Anwendung, da der Benutzer admin als erster Eintrag in der entsprechenden Tabelle steht.

Version vom 15. Juni 2021, 08:42 Uhr

Voraussetzung

  • Security level: 0

Ziel

  • Oft sind Anmeldungen datenbankbasiert.
  • Test der Anmeldeseite auf Möglichkeiten der Informationsgewinnung.
  • Test der Anmeldeseite auf Möglichkeiten der Manipulation.

Aufruf der Anmeldemaske

  • OWASP 2017 -> A1 Injection (SQL) -> SQLi Bypass Authentication -> Login

Versuch einen Fehler zu generieren

  • Eingabe eines einzelnen Anführungszeichens in Eingabefeld Username.
  • Ein einzelnes Anführungszeichen ist bei Datenbanken ein spezielles Zeichen.

Mutillidae-01.png

generierter Fehler 1

Mutillidae-02.png

Erkenntnisse

  • Dem Anwender wird eine Fehlermeldung mit vielen Systeminformationen angezeigt.
  • Die Tatsache dass ein solcher Fehler nicht abgefangen wird lässt auf Angreifbarkeit schließen.
  • Im Hintergrund läuft eine MySQL Datenbank.
  • Die abgesetzte SQL-Abfrage ist zu sehen. Hier erscheint in der Abfrage nur der Benutzername.
SELECT username FROM accounts WHERE username=''';

weiterer Test

  • da in der obigen Abfrage nur der Benutzername auftaucht geben wir nun ein einzelnes Hochkomma im Eingabefeld für das Passwort ein.

Mutillidae-03.png

generierter Fehler 2

Mutillidae-04.png

  • Hier tauchen sowohl Benutzername und Passwort in der Abfrage auf.

Manipulation der Abfrage

  • Eingabe von 'or 1=1-- im Eingabefeld für den Namen. (Achtung: am Schluß muss ein Leerzeichen sein.)
  • generierte Abfrage:
SELECT username FROM accounts WHERE username=''or 1=1-- ';
  • Die beiden Minuszeichen mit folgendem Leerzeichen bewirken, dass MySQL den Rest der Zeile als Kommentar interpretiert. (wird hier gebraucht wegen dem abschließenden einzelnen Hochkomma das sonst einen Fehler generieren würde.)
  • Nach Anklicken des Buttons Login ist man als Benutzer admin angemeldet.
  • Der Grund, dass man hier als Admin angemeldet ist, liegt in der Struktur der Anwendung, da der Benutzer admin als erster Eintrag in der entsprechenden Tabelle steht.