SQL Injection - Umgehen der Anmeldung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Zeile 38: | Zeile 38: | ||
*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 bewirken, dass MySQL den Rest der Zeile als Kommentar interpretiert. (wird hier gebraucht wegen dem | + | *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. | *Nach Anklicken des Buttons Login ist man als Benutzer admin angemeldet. |
Version vom 15. Juni 2021, 08:37 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.
generierter Fehler 1
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.
generierter Fehler 2
- 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.