Server gehackt?! Brauche unbedingt Eure Hilfe!
Server gehackt?! Brauche unbedingt Eure Hilfe!
Hallo Leute,
wie eigentlich jeden Tag schau ich mal auf meinen Server mach nen top, ps -efa, df -k, etc.
Ja - und beim ps -efa kommt plötzlich folgendes:
apache 12385 11733 0 20:51 ? 00:00:00 sh -c cd /tmp;perl shell.pl
apache 12386 12385 0 20:51 ? 00:00:00 lpd
apache 12418 12386 0 20:52 ? 00:00:00 sh -c echo "(`whoami`@`uname -n`:`pwd`)"; /bin/sh
apache 12424 12418 0 20:52 ? 00:00:00 /bin/sh
postfix 12561 29089 0 20:54 ? 00:00:00 pickup -l -t fifo -u
apache 12695 2945 0 20:56 ? 00:00:00 /usr/sbin/httpd
Ein apache-Prozess hat ne sh gestartet, und diese wieder den lpd (obwohl ich den lpd gar nicht drauf hab?!).
In meinem /tmp Ordner befinden sich plötzlich mehrere Dateien mit shell.pl, shell.pl.1, etc.
Also habe ich aus Vorsicht mal alle Dateien aus /tmp gelöscht und den Webserver gestoppt, Updates mittels yum überprüft - bin auf dem aktuellen Stand (hab Fedora Core 1).
Webserver wieder gestartet - ja und in der letzten Stunde sind plötzlich folgende Einträge im /tmp da:
-rw------- 1 apache apache 0 6. Dez 22:00 sess_9b698a2374622bbefe3062b95f8b219d
-rw------- 1 apache apache 0 6. Dez 21:25 sess_d77682f22cb4d92e9a8bf73c64421a8a
-rw------- 1 apache apache 17 6. Dez 21:29 sess_f5bd15ad4774be41a2846a4ada6dd6b5
in der einen Datei (letzte) steht:
nid|s:6:"logged";
(aber vielleicht ist das ja auch von einem Kunden...)
- Ich habe bereits in meinen access sowie error-logs nach dieser shell.pl, nach wget gesucht - jedoch ohne Erfolg. Perl ist bei all meinen Kunden (außer bei mir) deaktiviert, SafeMode ist bis auf einem Kunden ausgeschaltet.
chkorrkit und rootkit finden auch keinen Wurm oder ähnliches. Kernel hab ich: 2.4.22-1.2188.nptl
Hat jemand vielleicht ein ähnliches Problem? Ihr würdet mir wirklich helfen!
Viele Grüße,
Dominik.
wie eigentlich jeden Tag schau ich mal auf meinen Server mach nen top, ps -efa, df -k, etc.
Ja - und beim ps -efa kommt plötzlich folgendes:
apache 12385 11733 0 20:51 ? 00:00:00 sh -c cd /tmp;perl shell.pl
apache 12386 12385 0 20:51 ? 00:00:00 lpd
apache 12418 12386 0 20:52 ? 00:00:00 sh -c echo "(`whoami`@`uname -n`:`pwd`)"; /bin/sh
apache 12424 12418 0 20:52 ? 00:00:00 /bin/sh
postfix 12561 29089 0 20:54 ? 00:00:00 pickup -l -t fifo -u
apache 12695 2945 0 20:56 ? 00:00:00 /usr/sbin/httpd
Ein apache-Prozess hat ne sh gestartet, und diese wieder den lpd (obwohl ich den lpd gar nicht drauf hab?!).
In meinem /tmp Ordner befinden sich plötzlich mehrere Dateien mit shell.pl, shell.pl.1, etc.
Also habe ich aus Vorsicht mal alle Dateien aus /tmp gelöscht und den Webserver gestoppt, Updates mittels yum überprüft - bin auf dem aktuellen Stand (hab Fedora Core 1).
Webserver wieder gestartet - ja und in der letzten Stunde sind plötzlich folgende Einträge im /tmp da:
-rw------- 1 apache apache 0 6. Dez 22:00 sess_9b698a2374622bbefe3062b95f8b219d
-rw------- 1 apache apache 0 6. Dez 21:25 sess_d77682f22cb4d92e9a8bf73c64421a8a
-rw------- 1 apache apache 17 6. Dez 21:29 sess_f5bd15ad4774be41a2846a4ada6dd6b5
in der einen Datei (letzte) steht:
nid|s:6:"logged";
(aber vielleicht ist das ja auch von einem Kunden...)
- Ich habe bereits in meinen access sowie error-logs nach dieser shell.pl, nach wget gesucht - jedoch ohne Erfolg. Perl ist bei all meinen Kunden (außer bei mir) deaktiviert, SafeMode ist bis auf einem Kunden ausgeschaltet.
chkorrkit und rootkit finden auch keinen Wurm oder ähnliches. Kernel hab ich: 2.4.22-1.2188.nptl
Hat jemand vielleicht ein ähnliches Problem? Ihr würdet mir wirklich helfen!
Viele Grüße,
Dominik.
PHP script hack 0815
Hier muss nicht dein Server gecrackt worden sein. Solche Programme wie "lpd" (unverfänglicher Name, fällt in der Prozesstabelle kaum auf) oder shell.pl können leicht durch unsichere PHP-Skripte installiert und gestartet werden. Stichwort "allow_url_fopen".
:arrow: Tipp: schau, ob auf deinem Server phpBB2-Installationen rumlungern, die mal wieder nicht mit dem letzten sicherheitskritischen Patch von 18. November 2004 versorgt wurden. Die phpBB-Group sieht sich sogar veranlasst, einen "phpBB 2.0.11 upgrade reminder" zu veröffentlichen. Die Cracks von phpBB2-Boards häufen sich in letzter Zeit.
Bei PHP/Perl als CGI/suexec läuft so ein Programm dann unter der User ID und kann nicht viel mehr als die Userdaten kaputt machen.
Bei PHP/Perl als Modul ohne suexec läuft das ganze unter dem apache-User und kommt an mehr Daten ran. Tja, hätte man lieber ... :roll:
:arrow: Tipp: schau, ob auf deinem Server phpBB2-Installationen rumlungern, die mal wieder nicht mit dem letzten sicherheitskritischen Patch von 18. November 2004 versorgt wurden. Die phpBB-Group sieht sich sogar veranlasst, einen "phpBB 2.0.11 upgrade reminder" zu veröffentlichen. Die Cracks von phpBB2-Boards häufen sich in letzter Zeit.
Bei PHP/Perl als CGI/suexec läuft so ein Programm dann unter der User ID und kann nicht viel mehr als die Userdaten kaputt machen.
Bei PHP/Perl als Modul ohne suexec läuft das ganze unter dem apache-User und kommt an mehr Daten ran. Tja, hätte man lieber ... :roll:
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
Hi kawfy,
danke für Deine Antwort! :) Du kommst aus KA? :) me too....!
Ich habe jetzt auch was gefunden in ner error_log eines Kunden:
--11:45:03-- http://learningphp.altervista.org/shell.pl
=> `shell.pl'
Aufl?sen des Hostnamen ?learningphp.altervista.org?.... fertig.
Verbindungsaufbau zu learningphp.altervista.org[67.15.104.45]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
L?nge: 616 [text/plain]
0K 100% 601.56 KB/s
Und bei dem Kunden war auch der Safemode noch off (war man einmal zu gutmütig...). Jetzt ist er on! :) Und ne phpbb hat er auch!
Ã?brigens, allow_url_fopen ist in meiner php.ini auf Off.
Ich hab jetzt als work-around mal in meine hosts hinter die learningphp.altervista.org ne ander/ungültige IP gesetzt.
Auf meinem Rechner läuft Confixx - gibts da ne einfache Möglichkeit suexec für meine Kunden zu aktivieren? In der confixx_vhosts.conf steht derzeit bei jedem Kunden z. B.
DocumentRoot /domains/web7/html
SuexecUserGroup web7 web7
Viele Grüße und danke für Deine Hilfe!
Dominik
danke für Deine Antwort! :) Du kommst aus KA? :) me too....!
Ich habe jetzt auch was gefunden in ner error_log eines Kunden:
--11:45:03-- http://learningphp.altervista.org/shell.pl
=> `shell.pl'
Aufl?sen des Hostnamen ?learningphp.altervista.org?.... fertig.
Verbindungsaufbau zu learningphp.altervista.org[67.15.104.45]:80... verbunden.
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
L?nge: 616 [text/plain]
0K 100% 601.56 KB/s
Und bei dem Kunden war auch der Safemode noch off (war man einmal zu gutmütig...). Jetzt ist er on! :) Und ne phpbb hat er auch!
Ã?brigens, allow_url_fopen ist in meiner php.ini auf Off.
Ich hab jetzt als work-around mal in meine hosts hinter die learningphp.altervista.org ne ander/ungültige IP gesetzt.
Auf meinem Rechner läuft Confixx - gibts da ne einfache Möglichkeit suexec für meine Kunden zu aktivieren? In der confixx_vhosts.conf steht derzeit bei jedem Kunden z. B.
DocumentRoot /domains/web7/html
SuexecUserGroup web7 web7
Viele Grüße und danke für Deine Hilfe!
Dominik
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
...komisch, suexe ist lt. error-log gestartet:
[Mon Dec 06 14:41:24 2004] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Dec 06 14:41:24 2004] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
-
- Posts: 8
- Joined: 2003-12-23 16:22
- Location: Grevenbroich/Neuss
suexec
suexec support ist meist in apache default einkompiliert oder geladen, und hinterlässt diese notiz das es läuft, dies heisst aber nicht zwanghafter weise das scriptsprachen auch mit suexec ausgeführt werden. confixx is eh ...naja.. oO
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
Modul wird geladen, richtig:
LoadModule suexec_module modules/mod_suexec.so
Und bei den einzelnen VirtualHosts steht auch der suexec dabei:
z. B. hier ein VH:
<VirtualHost XX:80>
ServerName XX.de
DocumentRoot /domains/web1/html
SuexecUserGroup web1 web1
ScriptAlias /cgi-bin/ /domains/web1/html/cgi-bin/
</VirtualHost>
...ist noch etwas zu tun? Denn die ganzen Prozesse die ich sehe sind alle User apache :-(
LoadModule suexec_module modules/mod_suexec.so
Und bei den einzelnen VirtualHosts steht auch der suexec dabei:
z. B. hier ein VH:
<VirtualHost XX:80>
ServerName XX.de
DocumentRoot /domains/web1/html
SuexecUserGroup web1 web1
ScriptAlias /cgi-bin/ /domains/web1/html/cgi-bin/
</VirtualHost>
...ist noch etwas zu tun? Denn die ganzen Prozesse die ich sehe sind alle User apache :-(
-
- Posts: 8
- Joined: 2003-12-23 16:22
- Location: Grevenbroich/Neuss
das ist ja wunderbar :-)
Confixx ( kenn ich nicht, 1 Tag mal getestet hatte mir gereicht lol ), aber meines Wissens läuft Confixx serienmässig nur mit mod_php und somit alle Kunden PHP Scripts mit den Rechten des Webservers laufen. Der einzige Schutz ist somit safe mode und basedir restrictions, und gefährliche Funktionen global verbieten. Confixx ist somit meines erachtens nicht gerade eine sichere Umbegung fürs multihosting von Leuten die man nicht kennt, also nicht vertrauenswürdig. Wenn SuExec vernünftig eingerichtet ist sollten zumindes cgi scripte mit den rechten von dem jeweiligen webuser laufen. Prüfe dies mal aufjedenfall indem du mal suexec -V werte prüfst mit der Confixx hosting Umgebung, steht auch im Handbuch.
gerade bei confixx umgebung einem Kunden safe_mode off zu gewähren ist eine Einladung mit den Rechten des Apaches zu spielen und somit eine Tür mit den Daten anderer Kunden zu spielen, da apache zugriff auf alle kundenwebinhalte hat, zumindes lesezugriff.
Checke mal mit phpinfo() ob allow_url_fopen wirklich aus ist, bei mir funktionierte dies nicht mit parm "Off" sondern nur mit "0" in der ini. Am besten ist es PHP ohne diesen support für diesen wrapper zu kompilieren (falls dies noch geht, müsste aber).
gerade bei confixx umgebung einem Kunden safe_mode off zu gewähren ist eine Einladung mit den Rechten des Apaches zu spielen und somit eine Tür mit den Daten anderer Kunden zu spielen, da apache zugriff auf alle kundenwebinhalte hat, zumindes lesezugriff.
Checke mal mit phpinfo() ob allow_url_fopen wirklich aus ist, bei mir funktionierte dies nicht mit parm "Off" sondern nur mit "0" in der ini. Am besten ist es PHP ohne diesen support für diesen wrapper zu kompilieren (falls dies noch geht, müsste aber).
Ausserdem den base restrikt hinzufügen mal versuchen, müsste in einer template datei von confixx gehen ( von der logic her )Anmerkung: Die Option wurde unmittelbar nach der Freigabe von PHP 4.0.3 eingeführt. In den Versionen bis zu inklusive 4.0.3 können Sie diese Eigenschaft nur während des Kompilierens mittels der Konfigurationsoption --disable-url-fopen-wrapper deaktivieren.
greetzphp_admin_value open_basedir /domains/web1/html/
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
Hi,
erst mal danke dass Du Dich meinen Problem(en) annimmst! Es scheint wirklich das phpbb gewesen zu sein, aber auch mit eingeschaltetem SafeMode hatte ich neu heutemorgen in meinen Prozess Versuche zum Download mittels wget. Aber dank meiner /etc/hosts hat dies diemal nicht geklappt. Forum des Kunden ist schon 1 Jahr alt und jetzt off - seitdem sieht es ruhig aus.
allow_url_fopen ist übrigens wirklich auf Off, habs gerade gecheckt in der phpinfo.
Mein VHost sieht nun wiefolgt aus:
<VirtualHost 82.149.231.20:80>
ServerName XX.de
DocumentRoot /domains/web1/html
SuexecUserGroup web1 web1
ScriptAlias /cgi-bin/ /domains/web1/html/cgi-bin/
php_admin_value open_basedir /domains/web1/html/:/domains/web1/phptmp/:/domains/web1/files/:/domains/web1/atd/
php_admin_value file_uploads 1
php_admin_value upload_tmp_dir /domains/web1/phptmp/
</VirtualHost>
Meine Suexec -V sagt folgendes:
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"
In dem genannten Logfile /var/log/httpd/suexec.log steht absolut nichts... :(
Ã?brigens, ja.. ich habe eigentlich nur vertrauenswürdige Kunden (insgesamt 30 Stück) - aber es ist trotzdem zu arg, wenn man sieht - wenn man nur php erlaubt was alles passieren kann...
Ja, aber suexec läuft immer noch nicht.... *schnief* Was könnte ich noch tun?
Viele Grüße und 1000-dank!
Dominik
erst mal danke dass Du Dich meinen Problem(en) annimmst! Es scheint wirklich das phpbb gewesen zu sein, aber auch mit eingeschaltetem SafeMode hatte ich neu heutemorgen in meinen Prozess Versuche zum Download mittels wget. Aber dank meiner /etc/hosts hat dies diemal nicht geklappt. Forum des Kunden ist schon 1 Jahr alt und jetzt off - seitdem sieht es ruhig aus.
allow_url_fopen ist übrigens wirklich auf Off, habs gerade gecheckt in der phpinfo.
Mein VHost sieht nun wiefolgt aus:
<VirtualHost 82.149.231.20:80>
ServerName XX.de
DocumentRoot /domains/web1/html
SuexecUserGroup web1 web1
ScriptAlias /cgi-bin/ /domains/web1/html/cgi-bin/
php_admin_value open_basedir /domains/web1/html/:/domains/web1/phptmp/:/domains/web1/files/:/domains/web1/atd/
php_admin_value file_uploads 1
php_admin_value upload_tmp_dir /domains/web1/phptmp/
</VirtualHost>
Meine Suexec -V sagt folgendes:
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"
In dem genannten Logfile /var/log/httpd/suexec.log steht absolut nichts... :(
Ã?brigens, ja.. ich habe eigentlich nur vertrauenswürdige Kunden (insgesamt 30 Stück) - aber es ist trotzdem zu arg, wenn man sieht - wenn man nur php erlaubt was alles passieren kann...
Ja, aber suexec läuft immer noch nicht.... *schnief* Was könnte ich noch tun?
Viele Grüße und 1000-dank!
Dominik
-
- Posts: 8
- Joined: 2003-12-23 16:22
- Location: Grevenbroich/Neuss
nunja
SuExec DOC_ROOT ist /var/www und sollte aber auf das DOC_ROOT aller Kunden zeigen damit SuExec diese überhaupt ausführen kann (ansonten Fehlermeldung im LOG), scheint bei dir ja /domains zu sein. Ausserdem
muss apache noch gesagt werden wie er cgi-script handhabt, such mal
den eintrag AddHandler cgi-script und schau welcher Dateien er annimmt.
ExecCGI is ja anscheinend nicht nötig da confixx ja den ScriptAlias benutzt und alias-forced-type setzt.
Und nochmals, PHP wird unter confixx nicht per SuExec ausgeführt, sondern als module von apache, dafür wäre php als cgi nötig was Confixx
ist seiner form anscheinend garnicht unterstützt, und sich nur mit safe_mode mit den apache rechten verlässt. setzt mal ein test cgi script in ein kundenverzeichnis( counter etc. ) und ruf es per url auf, und schau was suexec sagt. Bastel solange bis dort ein Eintrag steht das suexec erfolgreich unter user webx ausgeführt wurde. Aber wie es momentan aussieht passt des doc_root schonmal garnicht von suexec und muss neu kompiliert werden.
greetz
muss apache noch gesagt werden wie er cgi-script handhabt, such mal
den eintrag AddHandler cgi-script und schau welcher Dateien er annimmt.
ExecCGI is ja anscheinend nicht nötig da confixx ja den ScriptAlias benutzt und alias-forced-type setzt.
Und nochmals, PHP wird unter confixx nicht per SuExec ausgeführt, sondern als module von apache, dafür wäre php als cgi nötig was Confixx
ist seiner form anscheinend garnicht unterstützt, und sich nur mit safe_mode mit den apache rechten verlässt. setzt mal ein test cgi script in ein kundenverzeichnis( counter etc. ) und ruf es per url auf, und schau was suexec sagt. Bastel solange bis dort ein Eintrag steht das suexec erfolgreich unter user webx ausgeführt wurde. Aber wie es momentan aussieht passt des doc_root schonmal garnicht von suexec und muss neu kompiliert werden.
greetz
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
Ok, sorry - ich glaube da hab ich etwas falsch verstanden.
SuExec ist für Perl
SuPHP für PHP
Okay, Perl ist bei allen meinen Kunden nicht erlaubt - nur bei meinen eigenen Scripten - von daher interessiert mich das ganze für Perl nicht. Jedoch möchte ich, dass die PHP-Scripte mit dem jeweiligen User ausgeführt werden.
Also habe ich mal suphp installiert, Modul geladen, suPHP_engine on -> jedoch gibts dann nur nen Internal Server Error:
in meiner error.log steht z. B. - und das bei jedem PHP-Script:
[Tue Dec 07 13:48:10 2004] [error] [client 80.136.21.33] Premature end of script headers: visitors.php
[Tue Dec 07 13:48:10 2004] [error] [client 80.136.21.33] Error in suphp.c on line 81: execl() failed (Permission denied)
In meiner suphp.log sieht das dann so aus:
[Tue Dec 07 13:47:44 2004] [info] Executing /domains/web7/html/scripts/visitors.php as user web7 (10177), group web7 (10177)
[Tue Dec 07 13:47:44 2004] [error] System error: execl() failed (Permission denied)
Was mich auch wundert, wenn ich suphp mal so im Terminal aufruf erscheint:
Error in suphp.c on line 210: SCRIPT_FILENAME is not set
Suche schon den ganzen Mittag, wo der Fehler sein könnte....
SuExec ist für Perl
SuPHP für PHP
Okay, Perl ist bei allen meinen Kunden nicht erlaubt - nur bei meinen eigenen Scripten - von daher interessiert mich das ganze für Perl nicht. Jedoch möchte ich, dass die PHP-Scripte mit dem jeweiligen User ausgeführt werden.
Also habe ich mal suphp installiert, Modul geladen, suPHP_engine on -> jedoch gibts dann nur nen Internal Server Error:
in meiner error.log steht z. B. - und das bei jedem PHP-Script:
[Tue Dec 07 13:48:10 2004] [error] [client 80.136.21.33] Premature end of script headers: visitors.php
[Tue Dec 07 13:48:10 2004] [error] [client 80.136.21.33] Error in suphp.c on line 81: execl() failed (Permission denied)
In meiner suphp.log sieht das dann so aus:
[Tue Dec 07 13:47:44 2004] [info] Executing /domains/web7/html/scripts/visitors.php as user web7 (10177), group web7 (10177)
[Tue Dec 07 13:47:44 2004] [error] System error: execl() failed (Permission denied)
Was mich auch wundert, wenn ich suphp mal so im Terminal aufruf erscheint:
Error in suphp.c on line 210: SCRIPT_FILENAME is not set
Suche schon den ganzen Mittag, wo der Fehler sein könnte....
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
Der Fehler liegt im Ansatz.dominikde wrote:Ok, sorry - ich glaube da hab ich etwas falsch verstanden.
SuExec ist für Perl
SuPHP für PHP
Okay, Perl ist bei allen meinen Kunden nicht erlaubt - nur bei meinen eigenen Scripten - von daher interessiert mich das ganze für Perl nicht. Jedoch möchte ich, dass die PHP-Scripte mit dem jeweiligen User ausgeführt werden.
Suche schon den ganzen Mittag, wo der Fehler sein könnte....
a) SuEXEC ist nicht für Perl sondern für CGI (wodrüber man auch PHP laufen lassen kann).
b) Wie kommst du darauf, dass man nur Scripts von deinen "Kunden" ausnutzen kann und deine nicht?
Re: Server gehackt?! Brauche unbedingt Eure Hilfe!
Sowas tritt u.A. auf, wenn der Interpreter als Modul für den Apache kompiliert wurde (mit --with-apxs(2)) - in dem Fall einfach standalone bauen.Also habe ich mal suphp installiert, Modul geladen, suPHP_engine on -> jedoch gibts dann nur nen Internal Server Error:
cu