auf einen unserer Server wurde heute Nacht das zweite Mal zugegriffen, d.h. eine Datei PHP-Shell aufgespielt.
Zu dem Server:
- Linux debian 2.4.32 #3 SMP
- Debian Etch, aktuell
- Apache 2.2.3, suPHP 0.6.2, PHP 5.2.5
Die Sicherheitsarchitektur unterteilt die Kundenaccounts in separate Accounts, d.h. durch die suPHP-Implementierung sind die Accounts strikt getrennt.
In einem bestimmten Account war bisher nur eine index.php-Datei, die nur eine einzige Zeile enthält (einfache Weiterleitung, keine Variablen). Vorgestern Nacht wurde durch einen Angreifer/Robot eine PHP-Shell aufgespielt, die als User/Group die Daten des Accounts enthält. Gestern haben wir mod_security zusätzlich aufgespielt, um dem genauer auf den Grund zu gehen und weiteres zu verhindern.
Heute Nacht wurde eine weitere PHP-Shell unter anderem Namen aufgespielt, aber Dank mod_security konnte sie nicht ausgeführt werden. Da keine weiteren Dateien in dem Account sind, wodurch eine Injection erfolgt sein könnte, macht mir das große Sorgen, weil es den Schluss nahelegt, dass der Angreifer weitere Rechte erlangt hat, und die Datei dann einfach in den Ordner gelegt wurde. Der Kernel ist 'relativ' alt, allerdings sind mir auch keine remote root exploits >= 2.4.32 bekannt.
Wir werden den Server in Kürze neu aufsetzen und haben bis dahin permanent den Traffic im Auge, um sofort abschalten zu können, falls es losgehen sollte. Bis dahin möchte ich jedoch analysieren, um das Loch zu finden, um es dauerhaft zu schließen, dass es zukünftig nicht mehr auftritt.
Kann mir hier jemand einen konkreten Hinweis liefern, wo ich weitergucken könnte? Selbstredend ist an den klassischen Stellen wie u.a. /tmp nichts zu finden. Im error_log des spezifischen VHosts findet sich auch nur:
mzz.php war der Name der PHP-Shell, die vorgestern Nacht aufgeladen wurde (gestern gelöscht). Die Datei, die ich heute Morgen vorgefunden habe, war die a.php[Tue Apr 01 23:54:27 2008] [error] [client 89.35.68.156] File does not exist: /home/www/kunde5/domain.com/www/htdocs/mzz.php
[Tue Apr 01 23:55:45 2008] [error] [client 89.35.68.156] Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html, referer: http://www.domain.com/a.php
[Tue Apr 01 23:55:48 2008] [error] [client 89.35.68.156] ModSecurity: Access denied with code 500 (phase 2). Pattern match "(\\?((LOCAL|INCLUDE|PEAR|SQUIZLIB)_PATH|action|content|dir|name|menu|pm_path|path|pathtoroot|cat|pagina|path|include_location|root|page|gorumDir|site|topside|pun_root|open|seite)=(http|https|ftp)\\:/|(cmd|command)=(cd|\\;|perl |killall |python |rpm |yu ..." at REQUEST_BODY. [hostname "www.domain.com"] [uri "/a.php"] [unique_id "1M1Ghn8AAAEAAGSSBPkAAABF"]
Ich würde mich freuen, eine konkrete Hilfe zu bekommen, um das Problem zu beheben. Die leider häufig vorkommenden Kommentare "Sofort trennen, neu bespielen, etc." helfen hier nicht weiter, weil die Ursache zuerst eingekreist werden muss (zudem haben wir das MRTG die ganze Zeit fest im Auge).
Vielen Dank,
dertechniker