Roger: Bugausnutzung von PHP?

Guten Morgen!

In meiner Verzweifelung versuche ich mittlerweile überall Rat zu finden, doch hält man sich meist bedeckt.
Wir haben in unserem kleinen Rechenzentrum einen Server (LAMP) stehen, der immer wieder von irgendwelchen Kids geknackt wird. Unsere Vermutungen, warum gerade der Server es ist gehen zunächst in die Richtung, weil dieser zum einen nicht im Safe-Mode läuft und zum anderen viele virtuelle Server beinhaltet.
Bei einer Attacke werden im TMP-Verzeichnis mit den Benutzerrechten des Webserver-Users (www) Dateien abgelegt entpackt(!) und ein zweiter Webserver gestartet. Dieser dient dann wohl zum auskundschaften weiterer IP-Adressen. Nun ist hier die Frage nicht, was man damit anrichten kann, sondern wie ich das verhindern kann. Dabei interessiert es mich brennend, wie man so einen zweiten Server einfach so installieren kann. Das muss doch schon eine gewisse Sicherheitslücke sein, die wir die haben!
Weitere Details kann ich auch noch gern nennen, wenn Interesse besteht. Sollte jemand hier nicht posten wollen, würde mich auch eine eMail (r.o.g.e.r.[at]gmx.de) glücklich stimmen!

  1. 你好 Roger,

    Bei einer Attacke werden im TMP-Verzeichnis mit den Benutzerrechten des
    Webserver-Users (www) Dateien abgelegt entpackt(!) und ein zweiter
    Webserver gestartet.

    Wie meinst du das, ein zweiter Webserver wird gestartet? Auf welchem Port
    lauscht dieser?

    Dieser dient dann wohl zum auskundschaften weiterer IP-Adressen. Nun ist
    hier die Frage nicht, was man damit anrichten kann, sondern wie ich das
    verhindern kann.

    Zuerst muss du herausfinden, wie dieser zweite Webserver auf den Server
    kommt. Ist es ein Kunde? Ist es ein unsicheres Script?

    Im Kundenfall: da wuerde ich hoechstens rechtlich gegen vorgehen. Im Falle
    einer Sicherheitsluecke: _dringend_ fixen!

    Dabei interessiert es mich brennend, wie man so einen zweiten Server
    einfach so installieren kann. Das muss doch schon eine gewisse
    Sicherheitslücke sein, die wir die haben!

    Das herauszufinden ist deine Aufgabe :)

    再见,
     CK

    --
    Microsoft: Where do you want to go today?
    Linux: Where do you want to go tomorrow?
    FreeBSD: Are you guys coming, or what?
    http://wwwtech.de/
    1. Hi!

      Wie meinst du das, ein zweiter Webserver wird gestartet? Auf welchem Port
      lauscht dieser?

      Ganz normal Port 80. Den Prozess findet man mit "top". Gestern lief der als "httpd -DSSL". Vor 2 Wochen stand da was anderes hinter dem Minuszeichen.

      Zuerst muss du herausfinden, wie dieser zweite Webserver auf den Server
      kommt. Ist es ein Kunde? Ist es ein unsicheres Script?

      wenn ich soweit wäre, dann würde ich sicherlich keine Hilfe suchen. Das Problem ist nämlich hier, das ich nicht weiß woher der Gurk kam. Deswegen interessiert es mich ja so brennend, wie es funktioniert, damit ich dann Gegenmaßnahmen ergreifen kann.

      Das herauszufinden ist deine Aufgabe :)

      Das will ich ja, deswegen suche ich ja Hilfe... :(

      1. 你好 Roger,

        Wie meinst du das, ein zweiter Webserver wird gestartet? Auf welchem
        Port lauscht dieser?

        Ganz normal Port 80. [...]

        Das heisst, der regulaere Webserver laeuft dann auch nicht mehr?
        (Hintergrund: zwei verschiedene Prozesse koennen nicht auf demselben Port
        lauschen).

        [...] Den Prozess findet man mit "top". Gestern lief der als "httpd
        -DSSL". [...]

        Und woraus schliesst du, dass das nicht ein ganz normaler httpd-Prozess ist?

        [...] Vor 2 Wochen stand da was anderes hinter dem Minuszeichen.

        Was an der Konfiguration geaendert?

        Zuerst muss du herausfinden, wie dieser zweite Webserver auf den Server
        kommt. Ist es ein Kunde? Ist es ein unsicheres Script?

        wenn ich soweit wäre, dann würde ich sicherlich keine Hilfe suchen. Das
        Problem ist nämlich hier, das ich nicht weiß woher der Gurk kam.
        Deswegen interessiert es mich ja so brennend, wie es funktioniert,
        damit ich dann Gegenmaßnahmen ergreifen kann.

        Tja, aber so laeuft das nicht. Man kann nicht aufs geratewohl hinaus sagen
        "da liegt der Fehler". Dein System kennst du -- wenn nicht, solltest du
        vielleicht jemanden dafuer bezahlen, der es dann kennt.

        再见,
         CK

        --
        Fortune: Tao is source of the ten thousand things.
        It is the treasure of the good man, and the refuge of the bad.
        Sweet words can buy honor;
        Good deeds can gain respect.
        If a man is bad, do not abandon him.
        Therefore on the day the emperor is crowned,
        Or the three officers of state installed,
        Do not send a gift of jade and a team of four horses,
        But remain still and offer the Tao.
        Why does everyone like the Tao so much at first?
        Isn't it because you find what you seek and are forgiven when you sin?
        Therefore this is the greatest treasure of the universe.
        http://wwwtech.de/
        1. Hallo!

          Das heisst, der regulaere Webserver laeuft dann auch nicht mehr?
          (Hintergrund: zwei verschiedene Prozesse koennen nicht auf demselben Port
          lauschen).

          Doch, der läuft noch. Es wird schon irgend etwas anderes sein. Der Prozess hieß eben httpd. Deswegen meinte ich wohl es wäre ein weiterer Webserver.

          [...] Den Prozess findet man mit "top". Gestern lief der als "httpd
          -DSSL". [...]

          Und woraus schliesst du, dass das nicht ein ganz normaler httpd-Prozess ist?

          Weil die zum ersten alle "httpd" (ohne was drann) heißen und zum zweiten, weil sich in /tmp eine Datei namens httpd mit ausführbaren Rechten befunden hat. Plus noch irgendwelchen Kits - Shit, nicht mal die Dateinamen hab ich :(

          [...] Vor 2 Wochen stand da was anderes hinter dem Minuszeichen.

          Was an der Konfiguration geaendert?

          Nein. Das gleiche Problem. Das war eben schon der zweite "Angriff".

          1. 你好 Roger,

            Das heisst, der regulaere Webserver laeuft dann auch nicht mehr?
            (Hintergrund: zwei verschiedene Prozesse koennen nicht auf demselben
            Port lauschen).

            Doch, der läuft noch.

            Dann kann aber auf dem Port kein zweiter HTTP-Server laufen...

            [...] Den Prozess findet man mit "top". Gestern lief der als "httpd
            -DSSL". [...]

            Und woraus schliesst du, dass das nicht ein ganz normaler
            httpd-Prozess ist?

            Weil die zum ersten alle "httpd" (ohne was drann) heißen [...]

            Das heisst nichts :)

            [...] und zum zweiten, weil sich in /tmp eine Datei namens httpd mit
            ausführbaren Rechten befunden hat. Plus noch irgendwelchen
            Kits - Shit, nicht mal die Dateinamen hab ich :(

            Rechner neu aufsetzen. Und jemanden dafuer bezahlen, der sich damit
            auskennt. Meine Meinung.

            再见,
             CK

            --
            Unsere Vorstellungen von der Ewigkeit sind genauso nuetlich wie die Mutmassungen eines Kuehkens ueber die Aussenwelt bevor es die Eierschale aufbricht.
            http://wwwtech.de/
  2. Hallo!

    In meiner Verzweifelung versuche ich mittlerweile überall Rat zu finden, doch hält man sich meist bedeckt.

    Anhand Deiner Beschreibung lässt sich da auch nicht wirklich viel sagen.

    Wir haben in unserem kleinen Rechenzentrum einen Server (LAMP) stehen, der immer wieder von irgendwelchen Kids geknackt wird.

    Woran merkst Du das? Welche Dienst laufen auf dem Server? Geben die Logs dieser Dienste keinerlei Hinweise? Vor allem wenn Du das zeitlich eingrenzen kannst! Hast Du den Server mal von außen gescannt, welche Ports alle offen sind? Ist das richtig so? Angreifer öffnen gerne eine remote-shell. Bedenke dass wenn der Server kompromittiert wurde, Du nichts und niemandem mehr vertrauen kannst. Weder Logs, noch top, noch ps noch netstat, noch ls... Es gibt viele Wege alle diese Programme zu überlisten. Das was Dir diese Programme zeigen muss nicht die Realität sein.
    Was machst Du nachdem Du einen Einbruch bemerkt hast? Das System komplett neu aufgesetzt? Hast Du sämtliche Sicherheits-Updates der Programme in Deinem System eingespielt? Vor allem auch für solche Sachen wie Confixx, PHPmyAdmin, phpBB..., am besten möglichst wenig hiervon einsetzen.

    Unsere Vermutungen, warum gerade der Server es ist gehen zunächst in die Richtung, weil dieser zum einen nicht im Safe-Mode läuft und zum anderen viele virtuelle Server beinhaltet.

    Safe-Mode ist auch kein Allheilmittel. Was meinst Du mit "virtuellen Servern"? Virtual Hosts im Webserver, oder sowas wie UML...?

    Bei einer Attacke werden im TMP-Verzeichnis mit den Benutzerrechten des Webserver-Users (www) Dateien abgelegt entpackt(!)

    Das siehst Du also. Und zu der Zeit, wo das passiert gibt es keine verdächtigen Einträge im access_log des Webservers? Ein Versuch ist es in jedem Fall wert. Wenn das alles immer wieder passiert, könntest Du auch mal die Lofiles auf einen anderen Server schreiben lassen, damit der Angreifer diese nicht so einfach manipulieren kann (https://lists.balabit.hu/pipermail/syslog-ng/2001-February/001208.html).  Wenn ein Angreifer diese allerdings manipulieren kann, ist normalerweise wirklich ein großes Problem im System, mit ziemlicher Sicherheit fehlen Dir dann irgendwelche wichtigen Sicherheits-Updates.

    und ein zweiter Webserver gestartet.

    woraus schließt Du das?

    Dieser dient dann wohl zum auskundschaften weiterer IP-Adressen.

    Wozu braucht man da einen zusätzlichen Webserver?

    Nun ist hier die Frage nicht, was man damit anrichten kann, sondern wie ich das verhindern kann.

    Erstmal musst Du genau wissen was passiert. Du sagst zu Christian der "2." Webserver wäre unter Port 80. Wie genau unterscheidet sich denn das was Du beim 2. Webserver siehst, von Deinem eigentlichen Webserver? Ich meine jetzt nicht in Deiner Erinnerung, sondern tatsächlich, wenn Du z.B. das System neu aufsetzt, den Webserver startest, aber noch keine Online-Verbindung hast. Nicht dass das ganze auch ohne Online-Verbindung passiert :)

    Grüße
    Andreas

    --
    SELFHTML Tipps & Tricks: http://aktuell.de.selfhtml.org/tippstricks/
    1. Hallo!

      Wir haben in unserem kleinen Rechenzentrum einen Server (LAMP) stehen, der immer wieder von irgendwelchen Kids geknackt wird.
      Woran merkst Du das? Welche Dienst laufen auf dem Server? Geben die Logs dieser Dienste keinerlei Hinweise? Vor allem wenn Du das zeitlich eingrenzen kannst! Hast Du den Server mal von außen gescannt, welche Ports alle offen sind? Ist das richtig so?

      Ja, das passt IMHO alles. Standardmäßig ist nur port 80, 23, POP3, SMTP und MySQL offen. Die Logs lassen leider auf nichts schließen. Schon gar nicht das des Webservers. Den alle virtuellen Hosts haben ein eigenes Logfile welche ich auf die schnelle mal durchgegrept habe. Aber nach was suchen?

      Kernel, PHP, etc ist alles auf dem aktuellsten Stand.

      Der Angreifer hatte nur die Rechte des www-Users und konnte somit nur auf das TMP-Servzeichnis zugreifen.

      Was machst Du nachdem Du einen Einbruch bemerkt hast? Das System komplett neu aufgesetzt?

      Es reichte die Prozesse per "kill -9 Prozessnummer" zu killen und das Tmp-Verzeichnis zu leeren. Danach war die Auslastung wieder OK und der Server läuft seit 2 Tagen wieder stabil.

      Bei einer Attacke werden im TMP-Verzeichnis mit den Benutzerrechten des Webserver-Users (www) Dateien abgelegt entpackt(!)
      Das siehst Du also. Und zu der Zeit, wo das passiert gibt es keine verdächtigen Einträge im access_log des Webservers? Ein Versuch ist es in jedem Fall wert.

      Das ist ja das schlimme. Was ist "verdächtig"? Ich konnte leider nichts finden. Meine Vermutung geht zwar immer noch in Richtung phpBB, da da auch einige Kunden noch eine ältere Version haben, ist aber eben nur eine Vermutung... :(

      Wenn das alles immer wieder passiert, könntest Du auch mal die Lofiles auf einen anderen Server schreiben lassen, damit der Angreifer diese nicht so einfach manipulieren kann

      Wäre eine alternative. Werde ich mal in Angriff nehmen.

      und ein zweiter Webserver gestartet.
      woraus schließt Du das?

      Muss ja kein Webserver sein. Der Prozess hieß eben "httpd -DSSL". Sämtliche Webserverprozessen heißen bei dem Server "httpd".

      Nun ist hier die Frage nicht, was man damit anrichten kann, sondern wie ich das verhindern kann.
      Erstmal musst Du genau wissen was passiert. Du sagst zu Christian der "2." Webserver wäre unter Port 80.

      Sorry, war nur eine Annahme. Habe das ehrlich gesagt nicht getestet. Die Hektik war wieder mal zu groß, um alles aus zu kundschaften...

      Wie genau unterscheidet sich denn das was Du beim 2. Webserver siehst, von Deinem eigentlichen Webserver? Ich meine jetzt nicht in Deiner Erinnerung, sondern tatsächlich, wenn Du z.B. das System neu aufsetzt, den Webserver startest, aber noch keine Online-Verbindung hast. Nicht dass das ganze auch ohne Online-Verbindung passiert :)

      Lol, nee. Der Server is schon am Netz. Und bisher hab ich das auch alles mit meiner ssh-Verbindung bewältigen können.

      Danke für die Fragestellung und Zeit, die Ihr Euch genommen habt. Sowas hilft meist schon weiter!

      1. Es reichte die Prozesse per "kill -9 Prozessnummer" zu killen und das Tmp-Verzeichnis zu leeren. Danach war die Auslastung wieder OK und der Server läuft seit 2 Tagen wieder stabil.

        Sorry, war nur eine Annahme. Habe das ehrlich gesagt nicht getestet. Die Hektik war wieder mal zu groß, um alles aus zu kundschaften...

        Lol, nee. Der Server is schon am Netz. Und bisher hab ich das auch alles mit meiner ssh-Verbindung bewältigen können.

        Also nur, daß ich das jetzt richtig verstehe:
        Du glaubst, daß auf dem Server eingebrochen wurde und findest einen Prozeß, der Dir seltsam vorkommt. Aber anstatt herauszufinden, was los ist, schießt Du den Prozeß ab, löscht einige Dateien und läßt den Server weiterlaufen?
        Habe ich das so richtig verstanden?
        Für welche Firma arbeitest Du? *g*

        1. Ich nicht. Eher mein etwas hektischer Techniker. Aber das hilft jetzt der Problemfindung auch nicht weiter. Es ist nun mal passiert. Und damit es nicht mehr passiert, versuche ich das Problem einzugrenzen und dann auszugrenzen.
          Was sollte ich den deiner Meinung nach tun, sollte das selbe Problem nochmal auftauchen?

          1. Was sollte ich den deiner Meinung nach tun, sollte das selbe Problem nochmal auftauchen?

            Falls Du wirklich vermutest, daß jemand auf den Rechner Zugriff hatte, der keinen haben darf, solltest Du das gesamte System neu aufsetzen.
            Du solltest Dir auch die Frage stellen, ob es auf dem System nötig ist, Dateien aus /tmp auszuführen und die Partition mit noexec mounten.
            Und wenn wieder was passiert, solltest Du den Rechner vom Netz trennen und untersuchen, was und wie es passiert ist.
            Vielleicht hilfen Dir auch http://www.cert.org/tech_tips/win-UNIX-system_compromise.html und http://www.fish.com/tct/help-when-broken-into

            1. Danke für die Tips, werde sie mir mal komplett durchlesen.

              Anfänglich dachte ich da an einen Bug, der mit PHP ausgenutzt werden kann. Wie weiß ich allerdings noch nicht. Ich weiss nur, das in letzter Zeit alle großen Provider die Funktion allow_url_fopen deaktiviert haben wegen "Mißbrauchs". Vielleicht kommt ja deswegen der ganze Gurk auf die Maschine...

  3. Hallo!

    Der Kollege aus Rumänien hat es wieder probiert (über einen zwischenknoten von Sao Paulo).
    Diesmal bin ich selbst an das Problem herangetreten und konnte es auch lösen. Grund war die Präsenz eines Kunden, der ein Webboard (phpBB) mit einer speziellen bugbefallenen (Exploid) Version einsetzte. Die Hackversuche wurde aus den lokalen Logfiles gelöscht, so das hier erst mal kein herankommen war.

    Naja, und der Prozess, der den Server jedes Mal beanspruchte, war ein Bouncer, namens psyBNC. Dieser konnte ohne Probleme über eine einfache Befehlszeile im Webbrowser in das tmp-Verzeichnis installiert werden.

    Der erste Schritt, ein Update auf eine höhere phpBB Version ist bereits getan. Weiterhin hab ich noch die PHP-Config angezogen (auch ohne safe-mode kann man hier schon einiges schrauben, betrachte man da zum Beispiel die Funktion disable_functions).
    Viel Aufschluss brachte mir auch diese Seite hier: http://www.linux-magazin.de/Artikel/ausgabe/2004/10/php/php.html ff.

    ^^ Vielleicht hilft es ja irgendwann jemanden weiter.

    MfG.