phpinfo() – Sicherheitsrisiken und Lösungen
Was ist und was macht phpinfo() ?
Die phpinfo() Funktion wird standardmäßig von PHP bereitgestellt und zeigt eine Vielzahl von Informationen über die Konfiguration und den Status von PHP auf einem Server an: Die derzeitige PHP-Version und Umgebung, Informationen über das Betriebssystem, Dateipfade, Konfigurationsoptionen und sonstige sensible Informationen werden von phpinfo() angegeben.
Sie können die phpinfo() Funktion nutzen, indem Sie folgenden Code in Ihr PHP Script einfügen:
<?php phpinfo(); ?>
Informationen der phpinfo() Ausgabe können sehr nützlich für normale Anwender und Anwendungsentwickler sein, zum Beispiel beim Debuggen. Jedoch können Angreifer mit den Angaben, welche die phpinfo() Funktion anzeigt gezielter angreifen, da mehr Informationen über das System und dessen Konfiguration preisgegeben wird. Weitere Infos über phpinfo() können Sie hier finden: PHP: phpinfo – Manual
Sicherheitsrisiken welche durch phpinfo() entstehen können
Die phpinfo()-Ausgabe an sich bringt keine Sicherheitsrisiken, ist sie jedoch öffentlich zugänglich, können sich potenzielle Angreifer die ausgegebenen Informationen zunutze machen, um gezielter und effizienter Angriffe durchzuführen. Mögliche Risiken die durch die Einsicht der phpinfo() Informationen entstehen, können zum Beispiel sein:
- Informationen über Dateipfade:
Die phpinfo() Funktion kann von Angreifern genutzt werden, um die Lage sensibler Konfigurationsdateien oder Ähnlichem einzusehen oder sie zu erraten. Dies kann dann dafür genutzt werden, um potentielle Sicherheitslücken zu finden.
- Informationen über installierte Software-Versionen und Erweiterungen:
Welche Software auf Ihrem Server installiert ist, ist eine sensible Information, denn Dritte können somit mehr über Ihr System herausfinden und Sicherheitslücken der installierten Software ausnutzen. Besonders kritisch ist es bei installierter veralteter Software, da hier die Sicherheitslücken allgemein bekannt sind.
Unsere Empfehlungen und Lösungsansätze
Um sich vor den zuvor genannten Angriffsvektoren zu schützen, ist es wichtig, dass Sie den Zugriff auf die phpinfo()-Ausgabe beschränken. Im Folgenden werden von uns empfohlene Lösungen und Sicherheitsmaßnahmen aufgelistet, welche Sie in Betracht ziehen können:
- Löschung der Datei:
Falls Sie die phpinfo()-Ausgabe nicht mehr benötigen, ist die einfachste Lösung, die entsprechende Datei zu löschen. - Zugriff auf die Datei durch .htaccess einschränken:
Wenn Sie die phpinfo()-Ausgabe regelmäßig benötigen, können Sie den Zugriff auf diese durch eine .htaccess-Datei regulieren, sodass nur Sie persönlich darauf zugreifen können. Wie diese .htaccess-Datei aussieht erklären wir im Artikel: Wie versehe ich ein Verzeichnis mit einem Passwortschutz? - Verschleierung der phpinfo()-Ausgabe durch Umbenennung:
Natürlich ist es mühsam, jedes mal für eine Datei einen Zugriffsschutz wie oben beschrieben einzurichten, gerade wenn Sie die Information nur einmalig oder für eine kurze Zeit benötigen. In diesen Fällen empfehlen wir die phpinfo()-Datei unter einem möglichst kryptischen Namen, beispielsweise xyaa1569833.php, abzulegen anstatt mit dem Namen phpinfo.php. Dies erschwert es einem Angreifer die Informationen auszulesen, da dieser den Namen der Datei nicht durch raten herausfinden kann.
Die phpinfo() Ausgabe ist in der Regel eine nützliche Funktion und allein für sich genommen keine Sicherheitslücke. Jedoch kann die Funktion durch Angreifer genutzt werden, um Sicherheitslücken zu finden. Wir führen regelmäßige und mindestens monatliche Updates der Server durch, sodass bei Einsicht der phpinfo() mögliche Angriffsmöglichkeiten vermindert werden. Daher empfehlen wir die zuvor genannten Maßnahmen zur Erhöhung der Sicherheit.