Moin!
Mit diesem Freund brauchst Du keine Feinde mehr!
Das, was da "programmiert" wurde, ist so ziemlich die gefährlichste Standard-Sicherheitslücke, die es gibt. Lad das bloß nicht auf öffentlich zugänglichen PHP-Server hoch.
Tom, du erzählst Blödsinn.
Hier nochmal der fragliche Code, schöner formatiert:
<?php
if (isset($_GET["show"]) && file_exists($_GET["show"].".php"))
{
include($_GET["show"].".php");
}
else
{
include("home.php");
}
?>
Analysieren wir mal, wo grundsätzlich die Gefahr liegt: Ganz klar im include-Befehl, der grundsätzlich in der Lage wäre, auch entfernten Code (url_fopen_wrapper) einzufügen.
Allerdings steht der einzige include-Befehl, der das könnte, innerhalb einer IF-Abschnitts, und die Eingangsbedingung dafür ist:
1. $_GET[show] muß gesetzt sein.
2. Im lokalen Dateisystem muß eine $_GET['show']-Datei mit der Endung ".php" existieren.
file_exists kann nicht mithilfe von url_fopen_wrapper entfernte Dateien testen, es greift immer auf das lokale Dateisystem zu.
Und da Angreifer auf das lokale Dateisystem keinen Zugriff haben, können sie keinen eigenen Code einschleusen.
Auch reale Fremd-Accounts auf Shared-Hosting-Systemen dürften grundsätzlich nicht relevant sein, weil die Accounts hinsichtlich der Dateizugriffe gegeneinander abgeschottet sein sollten - andernfalls hätte man auf solchen Servern aber noch ganz andere Probleme, und diese potentielle Lücke wäre nur ein i-Tüpfelchen.
Deine Allgemein-Aussage, mit diesem Code würdest du jeden Server übernehmen können, ist jedenfalls falsch.
- Sven Rautenberg
--
My sssignature, my preciousssss!