Ergebnis 1 bis 3 von 3

Thema: [NYC09] - 02 - Pwned! - Exploiting A Vulnerable Server in Two Steps

  1. #1
    Administrator
    Registriert seit
    Apr 2004
    Beiträge
    754
    Renommee
    1274

    [NYC09] - 02 - Pwned! - Exploiting A Vulnerable Server in Two Steps

    In folgender Challenge geht es darum, einen imaginaeren Server auf Sicherheitsluecken zu untersuchen und sich daraufhin ueber moegliche Gegenmassnahmen Gedanken zu machen, die einen Einbruch verhindern bzw. den dadurch entstehenden Schaden minimieren koennten.

    Punkteverteilung
    Folgende Punkte koennen bei den einzelnen Aufgaben maximal erreicht werden (Aenderungen und die Vergabe von Zusatzpunkten vorbehalten):
    1. 2 Punkte
    2. 2 Punkte
    3. 1 Punkt
    4. 3 Punkte
    5. 2 Punkte


    Vorgehensweise
    Loesungen duerfen bis zum 31.01.2008 um 12:00 Uhr per PN an mich gesendet werden. Sollte es Fragen, Unklarheiten oder Fehler zur/in der Challenge geben, bitte per PN oder Mail direkt an mich wenden. Bei Aufgaben 2, 3 und 5 sind etwas ausfuehrlichere Antworten mit Beschreibung der Vorgehensweise bzw. Begruendung verlangt.

    Challenge
    Auf dem Server seien ein UNIX-artiges Betriebssystem und ein Apache-Webserver (nicht chroot'ed o.ae.) installiert. Zudem laeuft dort PHP mit aktivierten register_globals als Apache-Modul. Auf einem VHost stellt der Server einen minimalen Nopaste-Service zur Verfuengung (Sourcecode im Anhang, Installationsanleitung in der im Tarball entaltenen README). Saemtliche im Source-Tarball enthaltenen Dateien wurden - bis auf die Anpassung des Hostnamen in der include/config.php - fuer den Einsatz auf dem Server nicht modifiziert.

    1. Schreibe einen Remote-Exploit, der mithilfe von Schwachstellen in vorliegendem Nopaste-Skript das Ausfuehren beliebigen PHP-Codes (soweit es die Server-Konfiguration erlaubt) auf dem Server ermoeglicht.
    2. Im Anhang befindet sich eine Paketliste aller auf dem Server installierter Pakete, sowie die Ausgabe von `ps aux | grep ^root` und `find / -perm -4000 2> /dev/null`. Welches Paket/welche Binary bietet einen brauchbaren Angriffspunkt fuer einen lokalen root-Exploit (alle nicht in Paketen enthaltenen Binaries sind Teil des Basissystems und ausreichend gepatcht bzw. nicht angreifbar)? Wie laesst sich ein solcher Exploit im Zusammenhang mit der in Aufgabe 1 gefundenen Vulnerability aus der Sicht eines Angreifers ausnutzen?
    3. Es stellt sich heraus, dass es sich beim Server-OS um OpenBSD 4.4 handelt. Wieso ist ein einfacher lokaler root-Exploit, wie in Aufgabe 2 vorgeschlagen, unter diesen Bedingungen vermutlich nicht so einfach durchfuehrbar?
    4. Schreibe einen Patch fuer das Nopaste-Skript, der alle kritischen Sicherheitsluecken beseitigt.
    5. Welche generellen technischen Massnahmen zur Absicherung des Servers (ausser Updates bzw. Patchen der angreifbaren Skripte/Binaries) koennte man direkt auf dem Server vornehmen, um zukuenftige Angriffe auf den Server zu unterbinden bzw. den Schaden nach einem Einbruch ins System - wie in Aufgabe 1 durchgefuehrt - zu minimieren? Nenne einige Vorschlaege.

  2. #2
    Administrator
    Registriert seit
    Apr 2004
    Beiträge
    754
    Renommee
    1274

    Re: [NYC09] - 02 - Pwned! - Exploiting A Vulnerable Server in Two Steps

    Ach ja, sollte das mit PN wegen Anhaengen oder aehnlichem zu umstaendlich sein, kann das Ganze auch per Mail versandt werden. Einfach kurz via E-Mail-Kontaktformular oder PN anschreiben, damit ich Bescheid weiss.

    Und natuerlich gibt es auch hier Punkte fuer Teilloesungen - sollte jemand also bis morgen nur Teile/Unvollstaendiges ablieferen koennen, geht das voellig in Ordnung.

  3. #3
    Administrator
    Registriert seit
    Apr 2004
    Beiträge
    754
    Renommee
    1274

    Re: [NYC09] - 02 - Pwned! - Exploiting A Vulnerable Server in Two Steps

    Mit etwas Verspaetung will ich auch mal meine Challenge noch aufloesen. Im Prinzip waren alle Aufgaben mit wenig Vorkenntnissen loesbar, wenn man aufmerksam war und sich ein wenig umgeschaut hat.

    1. In der ersten Aufgabe sollte ein Remote-Exploit fuer das angehaengte Nopaste-Skript geschrieben werden. Nachdem man die Sache heruntergeladen und entpackt hat, liest man sich am besten erstmal kurz die README durch, um sich einen groben Ueberblick zu verschaffen und konfiguriert die Sache wie dort beschrieben. Eine Sache, die einem sofort beim Ueberfliegen der Aufgabe ins Auge fallen und die man sich auch merken sollte, sind die aktivierten register_globals, die spaeter noch eine Rolle spielen werden.

      Anschliessend kann man sich auf die Suche nach einem Ansatzpunkt fuer einen Exploit machen und wird hierzu zunaechst einmal die index.php betrachten. Auf den ersten Blick gibt es an dieser Stelle keinen Ansatzpunkt, da alle Variablen initialisiert zu werden scheinen und man auch nirgends irgendetwas injecten kann. Beim genaueren Hinsehen faellt einem bei folgendem Codeblock dann aber moeglicherweise auf, dass man unter Umstaenden doch um die Initialisierung von $include_file herum kommt und somit beliebige PHP-Dateien vom Server includen kann (siehe Directory Traversal):
      Code:
      if (isset($_GET["action"])) {
        if (in_array($_GET["action"], $valid_actions)) {
          $include_file = $_GET["action"];
        }
      }
      else {
        $include_file = "";
      }
      Wird $_GET["action"] auf einen Wert gesetzt, der nicht im $valid_actions-Array enthalten ist, so bleibt $include_file uninitialisiert und kann aufgrund der aktivierten register_globals auf einen beliebigen Wert gesetzt werden.

      Saemtliche Dateien im include-Verzeichnis lassen sich auch via HTTP aufrufen. In include/create.php kann man dadurch mit aktivierten register_globals $file_ext beliebig anpassen und - zusammen mit der Uebergabe eines entsprechenden Dateiinhalts ueber den contents-POST-Parameter beliebige Daten in beliebige Dateien (sofern man Permissions dafuer hat) schreiben.

      Einen fertigen Exploit werde ich jetzt nicht anhaengen, sollte mit den gegebenen Informationen jetzt aber relativ leicht zu bauen sein.
    2. Nun sollte man mithilfe der Ausgaben einiger Utils einen Angriffspunkt fuer einen lokalen root-Exploit finden. In der Prozessliste findet sich zunaechst nichts besonders auffaelliges, ausser eventuell sendmail, dass unter dem Benutzer root laeuft und - sofern es in einer veralteten Version vorliegt - moeglicherweise als Ansatzpunkt dienen koennte. Wirft man einen Blick in die Liste der setuid-Binaries, so findet man - ausser den ueblichen, zur Base gehoerenden - ausserdem den Eintrag /usr/local/sbin/ntop. Beim Blick auf die Paketliste wird man also in erster Linie nach sendmail und ntop schauen. Da sendmail in der Paketliste nicht enthalten ist, gehoert es vermutlich entweder zur Base des Systems (und waere somit laut Aufgabenstellung unangreifbar) oder es wurde selbst kompiliert und installiert, ohne zuvor ein Paket daraus zu bauen. Von ntop ist laut Paketliste Version 1.1 installiert. Nach einer kurzen Suche auf milw0rm, securityfocus, etc. stellt man fest, dass diese Version u.a. von einer Format String- und einer Buffer Overflow-Vulnerability betroffen ist. Da die Binary auf diesem System das setuid-Bit gesetzt hat, koennte dies als Ansatz fuer einen lokalen root-Exploit dienen.

      Da man nun dank der in Aufgabe 1 gefundenen Remote File Inclusion beliebige Befehle unter dem Benutzer, unter welchem der Webserver bzw. PHP laeuft, ausfuehren kann, indem man PHP-Dateien mit system()- bzw. exec()-Calls einschleust und anschliessend via HTTP startet und mittels dem eben gefundenen lokalen root-Exploit dann theoretisch root-Rechte erlangen koennte, kann man die gesamte Kiste "pwnen".
    3. Aufgrund diverser Schutzmechanismen waere ein solcher Angriff - wie er hier theoretisch durchgesprochen wurde - auf OpenBSD nicht moeglich. Zum einen ist der mitgelieferte Apache (wie einige auch angemerkt haben) unter OpenBSD per Default chroot'ed, wodurch man nach dem Ausnutzen der Remote File Inclusion-Vulnerability erst einmal ueberhaupt nich an die angreifbare ntop-Binary herankommen wuerde - wobei der Webserver in diesem Fall ja als nicht chroot'ed angenommen werden soll. Des Weiteren wird das exploiten durch einfache Buffer overflows bei OpenBSD z.B. durch W^X oder - was speziell in diesem Fall eine Rolle spielen sollte - Propolice (welches Stack-Smashing verhindert) unterbunden.
    4. Ein Patch/diff befindet sich im Anhang.
    5. Bei der letzten Aufgabe gab es viele Loesungsmoeglichkeiten, wobei ein paar wenige, vernuenftige Ideen gereicht haetten. Einige Antwortmoeglichkeiten:
      • Zunaechst einmal sollte man auf jeden Fall register_globals deaktivieren, da dieses unsauber programmierten Code quasi automatisch zum Ziel von Exploits macht. Skripts, die aktivierte register_globals benoetigen, will man nicht.
      • Z.B. via disable_functions den Aufruf von system(), exec() verbieten, falls diese nicht benoetigt werden.
      • Das setuid-Bit von ntop entfernen und stattdessen z.B. mit sudo(8) arbeiten.
      • Webserver/PHP (via CGI/suexec) unter separaten Usern laufen lassen, um im Falle eines Exploits eines PHP-Skripts nicht automatisch z.B. Webserver-Logs ueberschreibbar zu machen (sofern diese nicht eh unter einem anderen Benutzer wie root abgelegt werden).
      • Webserver chroot'en, wie es bei OpenBSD per Default der Fall ist.
      • Webserver etc. in eine virtualisierte Umgebung stecken (z.B. via OpenVZ, Jails), um eine Kompromittierung des Host-Systems zu vermeiden.
      • ...

      Welche dieser Moeglichkeiten sinnvoll sind, haengt immer vom Setup und Einsatzzweck ab.

    Weitere Fragen, Anregungen etc. koennen hier disskutiert werden, falls Bedarf besteht.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. [NYC09] - 04 - Crazy Scripting
    Von octogen im Forum Contest Forum
    Antworten: 19
    Letzter Beitrag: 11.04.2009, 15:55
  2. [NYC09] - 07 - IT Security Quiz - Did you know?
    Von Rodnox im Forum Contest Forum
    Antworten: 20
    Letzter Beitrag: 30.01.2009, 16:41
  3. [NYC09] - 05 - RGB Farbraum Analyse
    Von Atlantis im Forum Contest Forum
    Antworten: 4
    Letzter Beitrag: 17.01.2009, 21:41
  4. Win32 Exploiting
    Von master2000 im Forum (In)Security allgemein
    Antworten: 10
    Letzter Beitrag: 17.12.2004, 08:15
  5. CGI - exploiting
    Von ascii im Forum (In)Security allgemein
    Antworten: 1
    Letzter Beitrag: 02.05.2001, 16:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •