You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Jens Schwehn <sc...@st-oneline.net> on 2007/01/15 16:05:41 UTC

Amoklaufendes Script finden

Hallo liebe Listenmitglieder,

ich habe hier ein mittelschweres Problem und ich weiss nicht wie es
sauber lösen soll.

Folgendes Szenario:
Wir haben hier einen Apache 1.3 inkl. PHP, CGI und einem Haufen VHost
(named-based). Heute gegen 7.30 fing die Kiste an wie wild Mails in die
weite Welt zu pusten - klassische "injection" durch ein schlecht
geschriebenes Script.

Nach dem ich jetzt 30000 Mails gelöscht habe und sehr sehr gefrustet
bin, möchte ich dem Programmierer des Scriptes mal meine Meinung sagen
:) nur mein Problem ist, dass ich nicht einmal die Domain erkennen kann,
wo das Script liegt. Ich konnte die Domains schon auf ein paar dutzende
einschränken und stecke gerade bis zu den Achseln in Logfiles.

Erwarten würde ich, dass ich seitenweise Logeinträge finde, die
innerhalb von sehr kurzer Zeit eine URL aufrufen also zB.
x.x.x.x - - [05/Jan/2007:11:44:28 +0100] "POST messy.php" ...
und das dann 1000 mal direkt hintereinander - aber leider ist das nicht
so - zu mindesten bisher noch nicht.

Jetzt meine Frage, wie handhabt ihr das? Wie findet ihr heraus, welcher
Kunde mit seiner Domain Unsinn macht?

Ich habe zwar schon eine Runde im Netz gesucht - aber an Ermangelung an
"guten" Begriffen habe ich eher keine Informationen finden können.

Jede Anregung und jeder RTFM Pointer ist willkommen.

Ach noch was, wir loggen für jeden VHost in eine extra Datei.

-- 
Mit freundlichen Grüßen
Jens Schwehn


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden

Posted by Jens Schwehn <sc...@st-oneline.net>.
Rainer Sokoll wrote:
> Hast Du noch eine Mail? Dann nimm aus einer eine signifikante
> Zeichenfolge, und dann:

Ja, haben schon, aber leider besitzen die EMails keinen eindeutigen Part
- sowas wie ein "Ein Anfrage von der Homepage"... oder sowas ist nicht
zu finden.

Erschwerend kommt hinzu, dass ich die Mails nicht direkt bekomme,
sondern nur die Mailer Warnung von einem anderen System, dass die Mail
an XXX nicht zugestellt wurde.


-- 
Mit freundlichen Grüßen
Jens Schwehn


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden

Posted by Rainer Sokoll <R....@intershop.de>.
On Mon, Jan 15, 2007 at 04:05:41PM +0100, Jens Schwehn wrote:

> Jetzt meine Frage, wie handhabt ihr das? Wie findet ihr heraus, welcher
> Kunde mit seiner Domain Unsinn macht?

Hast Du noch eine Mail? Dann nimm aus einer eine signifikante
Zeichenfolge, und dann:

find /kundenwwwroot -type f -print0 | xargs -0 grep Zeichenfolge

Rainer

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden

Posted by ol...@goodngo.com.
Hallo Leute,

also wenn ich probleme mit �beraktiven Scripten habe, schaue ich zuerst die
Prozesse mit
ps fax
an.

Um die Prozessorauslastung zu beobachten gen�gt ein top.

*Nixe ebenso wie Dosen-Rechner erm�glichen ein Reihe von Kommandos solche
Prozesse zu stoppen.
MfG
Oliver Etzel
www.domainfex.de



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden

Posted by ma...@pwn4g3.de.
Wenn du Zugriff auf den Mailserver hast über den die Mails versende
werden, wirst du dort in der Queue warscheinlich einige der Mails sehen.
In diesen steht dann drin, an wen sie ursprünglich gehen sollten.
Auch wird oft die Webseite nochmals erwähnt.

So hast du gute Chancen, das verursachende Script zu finden.

Schönen Gruss
Matthias

> Stephan Ferraro wrote:
>> ich kann leider nicht direkt auf der apache Mailing Liste antworten
>> wegen Spam Gefahr, aber ich interessiere mich sehr fuer hoffnungslose
>> frustrierende Probleme unter Unix:
>
> Naja, hier ist weniger das OS der Grund der Verzweiflung - mehr das
> menschliche Verhalten an sich und das von Spammern im Speziellen.
>
>
>> Einen Wrapper schreiben fuer sendmail der die Shell Environement
>> Variabel HTTP_HOST in eine Datei loggt mit dem Inhalt und dem Ziel
>> der E-Mail Adresse. Das loggen ist nur vorruebergehend bis Sie
>> den Kunden gefunden haben.
>
> Interessante Idee - ein paar Mails vorher wurde sowas schon mal erwaehnt
> - ich habe das nur ueberlesen. Werde ich morgen gleich mal aus probieren.
>
>> Interessant koennte auch mal ein grep nach dem Befehl mail und
>> sendmail sein.
>
> Liefert zirka eine fantastizillioen Eintraege(*) und hilft somit auch
> nicht wirklich.
>
> Ich habe aber bereits Gegenmassnahmen implementiert - die ich hier erst
> einmal nicht genauer darlegen will.
>
>
> *) Wert kann leicht ueberschaetzt sein.
> --
> Mit freundlichen Grüßen
> Jens Schwehn
>
> --------------------------------------------------------------------------
>                 Apache HTTP Server Mailing List "users-de"
>       unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
>            sonstige Anfragen an users-de-help@httpd.apache.org
> --------------------------------------------------------------------------
>
>



--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden [Teilloesung]

Posted by Jens Schwehn <sc...@st-oneline.net>.
Jens Schwehn wrote:
Also ein kleines vorläufiges Ergebnis, die Idee mit dem Wrapper ist
recht gut und scheint soweit auch zu funktionieren. Ich habe das auf
einem kleinen Testsystem soweit getestet und mir sind folgende Probleme
aufgefallen

  * PHP läuft als Apache Module, somit wird die Umgebungsvariablen
    nicht angepasst, wie es bei der CGI Variante der Fall wäre.

Um diesem Manko zu beheben kann man mittels "auto_prepend_file"
Parameter in der php.ini für jedes PHP Script die entsprechenden
Umgebungsvariablen setzten

<?php
putenv('HTTP_HOST='      .$_SERVER['HTTP_HOST']);
putenv('SCRIPT_NAME='    .$_SERVER['SCRIPT_NAME']);
putenv('REMOTE_ADDR='    .$_SERVER['REMOTE_ADDR']);
putenv('REMOTE_PORT='    .$_SERVER['REMOTE_PORT']);
putenv('HTTP_USER_AGENT='.$_SERVER['HTTP_USER_AGENT']);
?>

Diese können dann mit einem kleinen Wrapper ausgewertet und geloggt werden.

Aber, auch hier bin ich auf kleine Hürden gestossen:

  * aktiver safe_mode verhindert das Manipulieren der
    Umgebungsvariablen. Das kann in der php.ini mit dem
    Parameter "safe_mode_allowed_env_vars" anpassen.

  * "base_dir" Einschränkung - das Script per Hardlink in ein
    Verzeichnis linken, dass von dem entsprechenden VHost zu erreichen
    und zu lesen ist. Ob es geht, das Script auch in include Pfad zu
    legen habe ich noch nicht getestet.
	
Den interessanten Teil kann ich noch nicht testen - irgendwie nehmen
die Kunden es einem Übel, wenn man deren Webserver mitten am Tag
rumdoktert ;). Ich werde heute Nacht das in aller Ruhe testen und
berichten ob und wie es geklappt hat.

Schon mal vielen Dank, für die Hilfen und die Anregungen.


-- 
Mit freundlichen Grüßen
Jens Schwehn
ASP - Anwendungsentwicklung

ST-oneline GmbH
Hovesaatstr. 6, D-48432 Rheine
Tel. +49 5971 80825-5, Fax: +49 5971 80825-79
eMail: info@st-oneline.net
WEB: http://www.st-oneline.net

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden

Posted by Jens Schwehn <sc...@st-oneline.net>.
Stephan Ferraro wrote:
> ich kann leider nicht direkt auf der apache Mailing Liste antworten
> wegen Spam Gefahr, aber ich interessiere mich sehr fuer hoffnungslose
> frustrierende Probleme unter Unix:

Naja, hier ist weniger das OS der Grund der Verzweiflung - mehr das
menschliche Verhalten an sich und das von Spammern im Speziellen.


> Einen Wrapper schreiben fuer sendmail der die Shell Environement
> Variabel HTTP_HOST in eine Datei loggt mit dem Inhalt und dem Ziel
> der E-Mail Adresse. Das loggen ist nur vorruebergehend bis Sie
> den Kunden gefunden haben.

Interessante Idee - ein paar Mails vorher wurde sowas schon mal erwaehnt
- ich habe das nur ueberlesen. Werde ich morgen gleich mal aus probieren.

> Interessant koennte auch mal ein grep nach dem Befehl mail und
> sendmail sein.

Liefert zirka eine fantastizillioen Eintraege(*) und hilft somit auch
nicht wirklich.

Ich habe aber bereits Gegenmassnahmen implementiert - die ich hier erst
einmal nicht genauer darlegen will.


*) Wert kann leicht ueberschaetzt sein.
-- 
Mit freundlichen Grüßen
Jens Schwehn

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: Amoklaufendes Script finden

Posted by Stephan Ferraro <co...@ferraro.net>.
On Mon, Jan 15, 2007 at 08:03:02PM +0100, Stephan Ferraro wrote:
> ...
> ich kann leider nicht direkt auf der apache Mailing Liste antworten
> wegen Spam Gefahr, aber ich interessiere mich sehr fuer hoffnungslose

Ooops! :-)
Jetzt habe ich doch hier gepostet.
Auf mich erwartet eine Spamwelle unglaublichen Ausmasses.
Ich geniesse noch die Ruhe vor dem Sturm. :-)
Ich mache mich schon mal bereit Whitelisting in meinem Mailserver
zu implementieren. :-)

-- 
Best regards,
Stephan FERRARO
Director & Member - Ferraro Ltd.
GnuPG public key: gpg --keyserver www.keyserver.net --recv-key F510D9A1

Re: Amoklaufendes Script finden

Posted by Stephan Ferraro <co...@ferraro.net>.
Hallo,

ich kann leider nicht direkt auf der apache Mailing Liste antworten
wegen Spam Gefahr, aber ich interessiere mich sehr fuer hoffnungslose
frustrierende Probleme unter Unix:
Ich wuerde folgendes machen falls es einen 2. Anlauf gibt:
Einen Wrapper schreiben fuer sendmail der die Shell Environement
Variabel HTTP_HOST in eine Datei loggt mit dem Inhalt und dem Ziel
der E-Mail Adresse. Das loggen ist nur vorruebergehend bis Sie
den Kunden gefunden haben.
Die Idee mit dem HTTP_HOST muessen Sie nochmal auf einem
Testserver testen, um sicher zu gehen das der Inhalt dieser Variabel
fuer die verschiedenen virtual hosts auch uebergeben wird.

Fuer das was schon passiert ist bleibt ihnen nichts anderes mehr
uebrig als die Uhrzeiten der Logdateien zu vergleichen.

Interessant koennte auch mal ein grep nach dem Befehl mail und
sendmail sein.

Voila,
bin mal gespannt ob das klappt.
Stephan.

On Mon, Jan 15, 2007 at 04:05:41PM +0100, Jens Schwehn wrote:
> Hallo liebe Listenmitglieder,
> 
> ich habe hier ein mittelschweres Problem und ich weiss nicht wie es
> sauber lösen soll.
> 
> Folgendes Szenario:
> Wir haben hier einen Apache 1.3 inkl. PHP, CGI und einem Haufen VHost
> (named-based). Heute gegen 7.30 fing die Kiste an wie wild Mails in die
> weite Welt zu pusten - klassische "injection" durch ein schlecht
> geschriebenes Script.
> 
> Nach dem ich jetzt 30000 Mails gelöscht habe und sehr sehr gefrustet
> bin, möchte ich dem Programmierer des Scriptes mal meine Meinung sagen
> :) nur mein Problem ist, dass ich nicht einmal die Domain erkennen kann,
> wo das Script liegt. Ich konnte die Domains schon auf ein paar dutzende
> einschränken und stecke gerade bis zu den Achseln in Logfiles.
> 
> Erwarten würde ich, dass ich seitenweise Logeinträge finde, die
> innerhalb von sehr kurzer Zeit eine URL aufrufen also zB.
> x.x.x.x - - [05/Jan/2007:11:44:28 +0100] "POST messy.php" ...
> und das dann 1000 mal direkt hintereinander - aber leider ist das nicht
> so - zu mindesten bisher noch nicht.
> 
> Jetzt meine Frage, wie handhabt ihr das? Wie findet ihr heraus, welcher
> Kunde mit seiner Domain Unsinn macht?
> 
> Ich habe zwar schon eine Runde im Netz gesucht - aber an Ermangelung an
> "guten" Begriffen habe ich eher keine Informationen finden können.
> 
> Jede Anregung und jeder RTFM Pointer ist willkommen.
> 
> Ach noch was, wir loggen für jeden VHost in eine extra Datei.
> 
> -- 
> Mit freundlichen Grüßen
> Jens Schwehn
> 
> 
> --------------------------------------------------------------------------
>                 Apache HTTP Server Mailing List "users-de" 
>       unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
>            sonstige Anfragen an users-de-help@httpd.apache.org
> --------------------------------------------------------------------------

-- 
Best regards,
Stephan FERRARO
Director & Member - Ferraro Ltd.
GnuPG public key: gpg --keyserver www.keyserver.net --recv-key F510D9A1