O'Reilly logo

PHP-Sicherheit: PHP/MySQL-Webanwendungen sicher programmieren by Stefan Esser, Christopher Kunz

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

2 Informationsgewinnung26
Wenn Sie hinter einer Webseite nun ein PHP-Skript vermuten, Parame-
ter jedoch per mod_rewrite umgeschrieben oder URL-Parameter an
eine unübliche Dateiendung wie .asp angehängt werden, können Sie
mit einem weiteren einfachen Trick herausfinden, ob Ihr Ziel wirklich
eine PHP-Datei ist. Suchen Sie einfach einen URL-Parameter, dessen
Fehlen eine Veränderung des Inhalts verursacht (etwa eine Seiten-ID
o.Ä.), und stellen Sie vor den Beginn des Variablennamens ein +. Wird
die aufgerufene Datei unverändert angezeigt, handelt es sich bei dem
Skript sehr wahrscheinlich um ein PHP-Skript.
2.5 Datenbanksystem erkennen
Eine große Stärke der Skriptsprache PHP liegt im einfachen und
unkomplizierten Zusammenspiel mit Datenbanken. Deshalb ist es für
einen Angreifer auch wichtig, zu wissen, ob eine und welche Daten-
bank verwendet wird, um einen eventuell möglichen Angriff darauf zu
starten. Die am häufigsten verwendete Datenbank im PHP-Umfeld ist
sicher MySQL, aber auch MS-SQL, PostgreSQL oder Oracle findet
man des Öfteren.
Fehlererzeugung zur
Erkennung der Datenbank
Am einfachsten erkennt man eine Datenbank, wenn der Port, auf
dem die Datenbank eine Anfrage erwartet, von extern, also von außer-
halb erreichbar ist. Dies ist bei den meisten Installationen aber nicht
der Fall, und so bleibt uns nur noch die Methode der Fehlererzeugung
analog zur Ermittlung der PHP-Installation im vorigen Abschnitt.
Werden Parameter in der URL übergeben oder werden Daten über
ein Formular in eine Datenbank eingegeben bzw. ausgegeben, kann
man durch Eingabe von Sonderzeichen wie
" oder ' versuchen, einen
Fehler zu verursachen. Dies funktioniert nur, wenn die
php.ini-Konfi-
gurationsoption
display_errors auf on steht. Hier ein Beispiel:
mysql error: You have an error in your SQL syntax. Check the manual
that corresponds to your MySQL server version for the right syntax
to use near ') OR postid IN(42, 260, 264, 272, 347, 485)
Anhand dieser Fehlermeldung kann nun auch auf die verwendete
Datenbank geschlossen werden, in diesem Beispiel MySQL.
Mit versionsabhängigen SQL-Abfragen die Datenbank ermitteln
Die Versionsnummer der MySQL-Datenbank zu ermitteln, ist relativ
einfach, wenn man eine entsprechende Schwachstelle in einer
Webapplikation findet. Beispiel:
"SELECT name FROM users WHERE id=".$_GET['id'];

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required