Suchen

Web Application Security in der Praxis, Teil 1

SQL Injection – Über das Web-Frontend auf Datenbank-Server zugreifen

Seite: 3/3

Firmen zum Thema

4. SQL-Version ermitteln

Ist die Ausgabe der letzten Abfrage 1,2,3 dann kann im nächsten Schritt anstelle dieser drei Zahlen etwas anderes ausgegeben werden. Es wird nun mit dem nächsten Befehl die SQL-Version ermittelt (die 2 wurde durch version() ersetzt):

http://www.[domainname].de/news.php?id=5+union+select+1,version(),3/*

Bildergalerie

5. Tabellen- und Spaltennamen ermitteln

Abhängig von der verwendeten MySQL-Version müssen die Tabellen- und Spaltennamen erraten werden. Dies ist bei der MySQL Version 4 der Fall. Man rät anhand oft verwendeter Namen, wie zum Beispiel:

  • Für Tabellen – user,users,admin,admins,member,members,etc.
  • Für Spalten – username,user,usr,user_name,password,pass,etc.

An dieser Stelle können Tools verwendet werden, die diesen Schritt deutlich beschleunigen.

Mit dem folgenden Befehl wird überprüft ob eine Tabelle namens users existiert:

http://www.[domainname].de/news.php?id=5+union+select+1,2,3+from+users/*

Ist dies der Fall so besteht die Ausgabe wieder aus 1,2,3. Nun kann man damit beginnen die Spalten zu erraten. Im folgenden wird die Spalte namens username ausprobiert:

http://www.[domainname].de/news.php?id=5+union+select+1,username,3+from+users/*

6. Ausgabe der Benutzer samt Passwort

Wurde der richtige Spaltenname ausgewählt, so kann nun der Spaltenname für die Benutzerpasswörter erraten werden. Mit CONCAT kann man mehrere Spalten an einer Zahl ausgeben lassen, somit ergibt sich folgender Befehl:

http://www.[domainname].de/news.php?id=5+union+select+1,concat(username,0x3a,password)3+from+users/*

0x3a steht hierbei für den Doppelpunkt. In der darauf folgenden Ausgabe werden die Daten wie folgt formatiert angezeigt:

Benutzer:PasswortBenutzer1:Passwort1...BenutzerN:PasswortN

Fazit

Nicht nur, dass es automatisierte SQL Injection Tools gibt –laut ExploitDB werden auch regelmäßig neue SQL-Schwachstellen bekannt. Deshalb sollte jedem bewusst sein, wie wichtig es ist, sich mit dieser Thematik auseinanderzusetzen. Vor allem sollten Entwickler schon bei der Programmierung bedenken, da ein nachträglicher Schutz vor SQL-Angriffen mit weiteren Kosten verbunden ist.

Inhalt

  • Seite 1: Wie SQL Injection funktioniert
  • Seite 2: Anfällige Webseiten per Google-Suche ermitteln
  • Seite 3: SQL-Version und Datenbank-Informationen ermitteln

(ID:2049623)