SQL Injection - Umgehen der Anmeldung: Unterschied zwischen den Versionen

Aus xinux.net
Zur Navigation springen Zur Suche springen
Zeile 30: Zeile 30:
 
*generierte Abfrage:
 
*generierte Abfrage:
 
  <nowiki>SELECT username FROM accounts WHERE username=''or 1=1-- ';</nowiki>
 
  <nowiki>SELECT username FROM accounts WHERE username=''or 1=1-- ';</nowiki>
*Die beiden Minuszeichen mit folgendem Leerzeichen bewriken, dass MySQL den Rest der Zeile als Kommentar interpretiert. (wird hier gebraucht wegen dem abschlißenden einzelnen Hochkomma: <nowiki>)
+
*Die beiden Minuszeichen mit folgendem Leerzeichen bewriken, dass MySQL den Rest der Zeile als Kommentar interpretiert. (wird hier gebraucht wegen dem abschlißenden einzelnen Hochkomma das sonst einen Fehler generieren würde.)
  
  

Version vom 15. Juni 2021, 08:21 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

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=''';

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 bewriken, dass MySQL den Rest der Zeile als Kommentar interpretiert. (wird hier gebraucht wegen dem abschlißenden einzelnen Hochkomma das sonst einen Fehler generieren würde.)


  • Eingabe im Namensfeld:
' or 1=1-- -


Mutillidae-02.png

  • Nach Anklicken des Buttons Login ist man als Benutzer admin angemeldet.