mbr: Site gehackt?

Beitrag lesen

Hallo Frankx
erstmal tschuldigung für die etwas verspätete Antwort.
Bisher habe ich es so gemacht, dass ich mir für jede Datei, die hochgeladen wurde selbst eine mail geschickt habe, ferner hatte ich vor dem Umbenennen der Temporären Datei eine Abfrage drin, ob die Datei auf .php oder pl endet. Da der upload jetzt eh abgeschaltet ist kann ich den code ja auch hier mal posten (ja,ja, ich weiss: security by obscurity bringt eh nichts...)

  
     $perl=false;  
     $php=false;  
     if(eregi("\.pl$",$_FILES[datei][name]))  
     {  
       $perl=true;  
     }  
     if(eregi("\.php[0-9]?$",$_FILES[datei][name]))  
     {  
       $php=true;  
     }  
     if(!$php && !$perl)  
     {  
       copy($_FILES[datei][tmp_name],"./upload/".$_FILES[datei][name]);  
       echo "Die Datei ".$_FILES[datei][name]." ";  
       echo "(Größe: ".$_FILES[datei][size]." Bytes, Typ: ".$_FILES[datei][type].")<br>";  
       echo "wurde erfolgreich auf den Server uebertragen";  
       mail("example@example.org","neue Datei","hi,\nEs wurde eine neue Datei hochgeladen:".$_FILES[datei][name],"from:test@example.org\r\n");  
     }  
     else  
     {     copy($_FILES[datei][tmp_name],"./upload/quarantaene/".$_FILES[datei][name]."qnt");  
       unlink($_FILES[datei][tmp_name]);  
       echo "sorry keine PHP und Perl-Scripts ;-)";  
       mail("example@example.org","alert","hi, \r\n Nachricht von privat/php_kurs/wo2tag2/auswertung. \r\n Datum: ".date("d.m.Y")."\r\n Es wurde versucht, ein Skript hochzuladen:".$_FILES[datei][name],"from:test@example.org\r\n");  
     }  

Es kann übrigens auch sein, dass es zusätzlich nützlich war, dass der Ordner auswertung über .htaccess vor Zugriffen geschützt war. Wie gesagt: in letzter zeit hatte ich zweimal eine warnmail bekommen, dass versucht wurde c99.php hochzuladen und nun hab ich den upload erstmal komplett eingestellt. War ja eh nur als Beispiel gedacht. Und bevor jetzt irgendjemand einen Weg findet, die Prüfung doch zu umgehen lasse ich es dann lieber ganz (ich hab zum Beispiel mal im Netz - leider finde ich die genaue Seite jetzt nicht mehr - gelesen, dass dateinamen wie c99.php%00.jpg einen solchen Schutz umgehen sollten. Bei Tests meinerseits hat das zwar nicht geklappt, das heißt: der Schutz hat weiterhin funktioniert - aber man kann ja nie wissen).
Der Vorschlag, mittels PHP direkt zu untersuchen, ob es sich um ein Bild handelt, ist natürlich sehr gut. Vieleicht werde ich das Beispiel doch wieder online stellen. Obwohl: Skripte sind ja nur das eine Problem. Was mache ich, wenn mich jemand mit einigen mehrere hundert MB großen Bildern zumüllt? Oder noch besser: mit mehreren tausend kleinen Bildchen. Und wohlmöglich handelt es sich dann noch um irgendwelche "illegalen" Sachen: (Kinder)Porno, NS-Symbole, weiss-der-kukuk-was-einem-noch-so-einfällt

Liebe Grüße mbr

P.S.: Vielleicht bin ich auch einfach nur paranoid (*umguck*)