Die Auswirkung der Apache-Konfiguration auf die Sicherheit der Webanwendung
Kommentare

Der JavaScript-Code zum Abschicken des TRACE-Requests durch einen XMLHttpRequest kann z. B. wie in Listing 2 aussehen. Da die Browserhersteller und das W3C die Missbrauchsmöglichkeit von TRACE-Requests

Der JavaScript-Code zum Abschicken des TRACE-Requests durch einen XMLHttpRequest kann z. B. wie in Listing 2 aussehen. Da die Browserhersteller und das W3C die Missbrauchsmöglichkeit von TRACE-Requests kennen, wird beim Erkennen der TRACE-Methode eine Fehlermeldung („SecurityError“) ausgegeben [4], [5]. Dieser Schutz ließ sich zumindest eine Zeit lang umgehen, da er recht eingeschränkt formuliert ist und von den Browserherstellern auch so umgesetzt wurde: „Throws a ,SecurityError‘ exception if method is a case-insensitive match for CONNECT, TRACE or TRACK.“ [5]. Ein „rn“ vor dem TRACE reichte aus, um den XMLHttpRequest erfolgreich abzuschicken. Die sich durch die rn-Kombination ergebende Leerzeile vor dem Request wird entsprechend dem HTTP-Standard vom Webserver ignoriert [6], [7].

Inzwischen bemängeln die meisten Browser aber auch die „Methode“ rnTRACE, sodass der Missbrauch nicht mehr so leicht möglich ist. Ein Angreifer kann aber evtl. über Plug-ins TRACE-Requests senden [8].

Listing 2: JavaScript-Code zum Senden des TRACE-Requests
 

‚);

Falls TRACE-Requests nur über Plug-ins möglich sind, die einen eigenen HTTP-Stack verwenden, können die Cookies und Authentifizierungsdaten nicht ausgespäht werden. Das Plug-in kann darauf nicht zugreifen und der Browser schickt sie nicht mit, da er mit der Kommunikation nichts zu tun hat. Evtl. sind aber andere Angriffe möglich.

So kann in einem TRACE-Request JavaScript-Code mitgeschickt werden, um einen XSS-Angriff auszuführen. Ein Beispiel dafür zeigt Listing 3. Dabei wird zwar nur über Telnet demonstriert, dass der JavaScript-Code zurückgeliefert wird, aber auch darüber ist evtl. ein Angriff möglich: Wenn der Request in einem Logfile protokolliert und das mit einem JavaScript-fähigen Programm betrachtet wird, wird der JavaScript-Code ausgeführt. Allerdings gibt es einfachere Methoden zum Einschleusen von XSS-Code in Logfiles als TRACE-Requests über Telnet.

Listing 3: Ein TRACE-Request mit XSS-Code
ceilers$ telnet testserver.example 80
Trying 192.168.1.100...
Connected to testserver.example
Escape character is '^]'.
TRACE / HTTP/1.1 
Host: testserver.example
X-Header:  

HTTP/1.1 200 OK
Date: Fri, 03 Aug 2012 21:07:12 GMT
Server: Apache/2.0.40 (Unix) 
Content-Type: message/http

TRACE / HTTP/1.1 
Host: testserver.example
X-Header:  
ceilers$
TRACE sicherheitshalber Ausschalten

Sofern die Methode TRACE nicht benötigt wird, sollte sie im Webserver deaktiviert werden. Denn was nicht vorhanden ist, kann auch nicht missbraucht werden. Für den Apache gibt es zum Deaktivieren der TRACE-Methode zwei Möglichkeiten:

  • Die TraceEnable-Direktive, die seit den Versionen 1.3.34 und 2.0.55 existiert, erlaubt das einfache Ausschalten der Methode [9]: Mit der Konfiguration „TraceEnable off“ wird auf TRACE-Requests mit dem Fehler 405 (Methode nicht erlaubt) reagiert. Der Default-Wert für TraceEnable ist „on„.
  • mod_rewrite kann ebenfalls eingesetzt werden, um unerwünschte Methoden zu deaktivieren. Für TRACE dienen dazu die folgenden Anweisungen [10]:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE
RewriteRule .* - [F]

Auch wenn der Webserver TRACE nicht mehr unterstützt, sind u. U. XST-Angriffe möglich, wenn das Opfer nämlich einen Proxy-Server nutzt, der die Methode TRACE unterstützt [11]. Der Angreifer muss dann nur den Header

Max-Forward: 0 

in den Request einfügen, damit der Proxy auf den Request antwortet und ihn nicht weiterleitet. Im JavaScript-Code in Listing 2 geht das durch Einfügen der Zeile

x.setRequestHeader("Max-Forwards", "0");

zwischen den xhr.open– und xhr.send-Aufrufen. Aber gegen solche Angriffe sind Sie machtlos, es ist Aufgabe des Betreibers des Proxy-Servers, dessen Missbrauch zu verhindern.


Themen der folgenden Seiten:

  • HTExploit umgeht .htaccess-Zugriffsbeschränkungen
  • Limitierte Zugriffsbeschränkungen
  • HTExploit in Aktion
  • Zugriff auf index.php mit der Methode GET
  • Zugriff auf index.php mit der Methode POTATO
  • Request-Methoden für CGI-Skripte
  • Zugriffsbeschränkungen auf Basis des Hostnames
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -