Server "gehackt" - blöd angestellt?

Hyho,

mein Server, bzw mein Webspace bei Ohost wurde gehackt. Es wurden ein paar blödsinnige leere php dateien hochgeladen und die 404.php geändert. Sonst scheint nichts passiert zu sein. Ich dachte erst an einen Hack, dann kam mir aber in den Sinn, das es etwas mit einem Uploadscript zu tun haben könnte. Könnte derjenige eine php seite hochgeladen haben, die andere Seiten manipuliert bzw was anderes hochläd? Eigentlich müsste ein Verzeichnis doch gewisse Schreibrechte benötigen um ohne FTP manipuliert zu werden. Oder ist das egal, sobald eine php seite vom Server aus aufgerufen wird?
Lässt sich das Problem lösen, indem ich einfach den Upload von php, html und konsorten verbiete?


MfG
 
Hallo,
PHP Dateien können andere Dateien verändern/manipulieren, allerdings gibts wieder dort wieder Einschränkungen usw., allerdings nutzten viele Server/Provider diesen Schutzmechanismus nicht und so kann eine hochgeladene PHP Datei auch andere Dateien modifizieren.
Selbst mit eingeschalteten Mechanismus (Safe Mode), kann eine PHP Datei andere Dateien des gleichen Besitzers ändern ohne besondere Schreibrechte zu benötigen, nur auf Dateien von anderen Besitzern hat man eingeschränkten Zugriff.

Safe Mode ist aber oft auf Off, so dass man oft alle Dateien min. im gleichen Verzeichnis ändern kann.

Deine Lösung wäre es, nur bestimmte Dateiendungen zu erlauben, z.B. .jpg, .gif, .zip etc.
 
Wahrscheinlich wäre es sicherer, den Upload-Ordner per .htaccess zu schützen, sodass niemand Zugriff hat. Die Dateien kann man dann ja mit einem PHP-Script herunterladen. So wird auf jeden Fall verhindert, dass Code ausgeführt wird.

Ein weiteres weit verbreitetes Sicherheitsproblem bei Upload-Scripten ist, dass Path-Angaben nicht maskiert werden. Man könnte dann z.B. eine Datei mit dem Namen "../index.php" o.ä. hochladen, was im die Umgehung des sicheren Ordners sowie das Überschreiben beliebiger Dateien verursachen würde.

Beim Download-Script muss man natürlich genau so aufpassen, sonst hat jeder Zugriff auf den Sourcecode beliebiger Dateien.
 
sicherste Möglichkeit: Upload-Verzeichnis außerhalb des Webroot!
(wird aber bei so free-hostern wie ohost sicherlich nicht möglich sein, oder? kenn mich da nicht aus, da ich meinen eigenen Server hab und nicht auf werbeverseuchten Space angewiesen bin :-P )
 
Original von beavisbee
sicherste Möglichkeit: Upload-Verzeichnis außerhalb des Webroot!
(wird aber bei so free-hostern wie ohost sicherlich nicht möglich sein, oder? kenn mich da nicht aus, da ich meinen eigenen Server hab und nicht auf werbeverseuchten Space angewiesen bin :-P )
Sowas gibt es bei uttx.net.
Man hat den Ordner pub, der als Webroot dient und den Ordner tmp, der halt für andere Sachen genutzt werden kann. :)

Gruß
 
Hi,

also ich habs inzwischen so gelöst, dass ich abgfrage, welcher Dateityp hochgeladen wurde und bei kritischen einfach blocke.

MfG
 
wenn du irgendwo Lücken hast, die beliebige auf dem Server befindliche Daten includen können, dann sind selbst Text-Dateien "kritische Datentypen"

Wie fragst du eigentlich den Datentyp ab?
Ausgehend von der Dateiendung oder (wie es definitiv besser ist) über den MIME-Type ?
 
hi!

Ich meine mal gelesen zuhaben, dass sowas wie.. bild1.php.%001.jpg (so irgendwas, kann mich nicht mehr genau erinnern) vom server automatisch zu bild1.php umgewandelt wird, da die echte endung wegfällt.

Bin mir aber nicht sicher - vll weiß wer was ich meine und kann es mir und den anderen erklären =)
 
Hallo,
im Upload Verzeichnis sollte eine .htaccess liegen mit dem Inhalt 'deny from all'.

Außerdem bringt es oft viel, in jedem Verzeichnis ne spezielle php.ini liegen zu haben:
Weiter lesen
 
Original von Huggy
Ich meine mal gelesen zuhaben, dass sowas wie.. bild1.php.%001.jpg (so irgendwas, kann mich nicht mehr genau erinnern) vom server automatisch zu bild1.php umgewandelt wird, da die echte endung wegfällt.
Das Hexadezimale %00 steht im Dezimalsystem für eine Null. Das sollte den (C/Asm)-Programmierern unter uns bekannt vorkommen - die 0 kennzeichnet nämlich das Ende eines Strings und verhindert so, dass die Speicher-Bereiche nach dem String als Teil von diesem angesehen werden.

Manche Hobby-Programmierer versuchen sich vor Remote-File-Includes zu schützen, indem sie an den übergebenen Datei-Namen serverseitig eine Dateiendung anhängen, etwa so:
Code:
<a href="?showimg=example"><img /></a>
----
fpassthru($GET['showimg'] . ".jpg");
Diese Dateiendung lässt sich aus oben genannten Gründen mit einer %00 abhängen. Was das bedeutet sollte klar sein.
 
Zurück
Oben