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 Informationsgewinnung32
Bis einschließlich PHP 5.2.0 konnte man öffentlich zugängliche php-
info
-Dateien mit geeigneten Begriffen einfach über Suchmaschinen fin-
den und so Angriffe vorbereiten. Seitdem enthält die HTML-Ausgabe
von
phpinfo() einen Header, der Suchmaschinen das Indizieren und
Speichern dieser Seiten verbieten soll.
2.6.5 Temporäre CVS-Dateien
Das populäre Versionskontrollsystem CVS enthält eine Funktion, die
beim Update einer Datei lokale Änderungen mit einer aktualisierten
Version aus dem CVS zusammenführen kann. Treten bei dieser
Zusammenführung Konflikte auf (etwa weil eine lokale Änderung von
der CVS-Version vernichtet würde), wird eine Sicherheitskopie der
alten Datei angelegt und unter dem Dateinamen
.#dateiname.php.1.2.3
gespeichert (das Suffix .1.2.3 steht für die Versionsnummer). Wie
bereits in Abschnitt 2.6.1 beschrieben, werden diese Dateien dank
mod_mime trotzdem als PHP-Code geparst, dieses Verhalten ist jedoch
webserverabhängig. Daher sollten Sie Merge- und Backupdateien stets
entfernen, bevor Sie ein Projekt freigeben.
2.7 Pfade
Für einen erfolgreichen Angriff oder Security-Test sind nicht nur die
Include- oder Backup-Pfade interessant, es gibt noch einige mehr.
2.7.1 mod_speling
Das Apache-Modul mod_speling – die inkorrekte Schreibweise ist ein
Scherz der Entwickler – unterstützt die Korrektur falsch geschriebener
Requests an den Apache-Webserver. Falls der Datei- oder Pfadname
falsch ist oder die Groß- und Kleinschreibung nicht beachtet wurde,
sorgt das Modul dafür, dass dem Benutzer alternative Dateinamen
angezeigt werden.
mod_speling setzt am Ende der Apache-Modulkette
an, nach allen anderen Modulen. Es durchsucht das komplette Ver-
zeichnis, das angefordert wurde, nach einem passenden Dateinamen
und erstellt eine Liste von Dateien, die durch die komplexe Logik von
mod_speling am besten zum ursprünglichen Request passen würden.
Diese Logik ignoriert maximal nur einen Fehler (ein Zeichen zu viel
oder zu wenig, zwei verdrehte Buchstaben oder ein falsches Zeichen).
phpinfo1D595>4TB65>1E6;59>5=,52C5BF5BS665>D<9385BB593821BC59>
332.7 Pfade
Wenn nach dem Durchsuchen des Verzeichnisses kein passendes
Dokument ermittelt wurde, wird ein »404«-Statuscode zurückgege-
ben. Passt nur ein Dokument auf den Request, wird ein Redirect auf
das Dokument veranlasst. Nur wenn mehrere Dokumente zu dem
Request passen, wird eine Linkliste mit diesen Dateinamen angezeigt.
Dies ist natürlich für die Zwecke eines Angreifers sehr hilfreich,
denn durch gezieltes Falschschreiben von Dateinamen erhält dieser
gültige Dateien zur Auswahl.
Beispiel:
Die eigentliche Datei, die aufgerufen werden soll, lautet
test.php.
Wenn ein Besucher einen Buchstabendreher in der Schreibweise hat
(z.B.
tset.php), so wird er trotzdem zur Datei test.php weitergeleitet.
Hat ein Besucher einen Buchstaben falsch geschrieben (z.B.
twst.php), so wird er ebenfalls zur Datei test.php weitergeleitet.
Neben der Korrektur von Tippfehlern kann
mod_speling auch bei nicht
oder falsch angegebenen Dateiendungen behilflich sein. Eine Kombi-
nation beider Korrekturmöglichkeiten unterstützt
mod_speling nicht.
Um das
mod_speling-Modul zu deaktivieren, erstellen Sie in einer
.htaccess-Datei oder in der Konfigurationsdatei des Apache-Servers
bitte den folgenden Eintrag:
CheckSpelling Off
2.7.2 robots.txt
Viele Entwickler von Webseiten leben in der ständigen Angst, Roboter
von Suchmaschinen könnten Verzeichnisse oder Dateien ohne direkte
Verlinkung entdecken und indizieren. Deshalb wird im Hauptverzeich-
nis eine Datei namens
robots.txt angelegt, in der Anweisungen für den
Suchroboter stehen. Diese geben an, welche Dateien und welche Ver-
zeichnisse der Suchroboter nicht indizieren darf.
Abb. 2–3
Ausgabe von mod_speling
2 Informationsgewinnung34
Aufbau einer robots.txt
robots.txt ist eine reine Textdatei und hat folgenden Aufbau:
# /robots.txt
User-agent: *
Disallow: /bin/
Disallow: /fastbin/
Disallow: /icons/
Disallow: /RealMedia/
Disallow: /forum/
Disallow: /Foren/
Wie hier gezeigt, werden Verzeichnisse angegeben, die normalen
Benutzern verborgen bleiben. Kandidaten für solche »versteckten«
Verzeichnisse sind:
/libs
/include
/inc
/backup
/old
Indem ein Angreifer zunächst die Datei robots.txt aufruft und ihren
Inhalt analysiert, kann er anhand der für Suchmaschinen verbotenen
Pfade einen Angriff vorbereiten, wenn der Administrator nicht weiter-
gehende Maßnahmen ergriffen hat, um diese Verzeichnisse vor unbe-
rechtigtem Zugriff zu schützen. Das Potenzial für Fehlinterpretation
ist jedoch so hoch, dass eine automatische Analyse selten in Frage
kommt – möchten doch viele Website-Betreiber zur Vermeidung von
unnötigem Traffic und Urheberrechtsverletzungen etwa ihre Bildver-
zeichnisse nicht durch Google und Co. indiziert wissen.
2.7.3 Standardpfade
Applikationspfade
Viele Content-Management-Systeme, Foren oder auch Gästebücher
haben Administrationsoberflächen, Upload-Verzeichnisse oder Konfi-
gurationsdateien in bestimmten Pfaden, die vom Internet aus erreich-
bar sind. Diese werden häufig unter diesen Namen angelegt:
/admin
/administration
/webadmin
/phpMyAdmin
/intern
/config
/upload
/data

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