Sonntag, 21. März 2010

News

präsentiert von: entwickler.com
Donnerstag, 22. September 2005

About Security #24: Caches indirekt vergiften

Übre HTTP-Response-Splitting-Angriffe sind auch Cross-Site Scripting und das Vergiften nicht direkt zugänglicher Caches möglich. Wie das funktioniert, verrät diese Folge von About Security.

Cross-Site Scripting mit Internet Explorer 6.0 SP1

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Im Vergleich zum Vergiften des Browser-Caches (siehe About Security #23) ist die Situation beim Cross-Site Scripting einfacher, da es egal ist, welcher HTTP-Request der zweiten HTTP-Response zugeordnet wird. Jeder weitere HTTP-Request über dieselbe TCP-Verbindung ist für dieselbe Website. Der Angriff ist daher erfolgreich, sofern der Server die TCP-Verbindung nicht beendet. Beendet der Server die Verbindung bei der Redirection, kann eine Bombardierung mit HTTP-Requests nach dem Muster aus About Security #23 zum Erfolg führen (Bsp. nach Amit Klein, "Divide and Conquer - HTTP Response Splitting, Web Cache Poisoning Attacks, and Related Topics", PDF):


<frameset cols="5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,5%,
5%,5%,5%">
<frame src="http://www.opfer.example/redir_lang.jsp?lang=%0d%0aConne
ction:%20Keep-Alive%0d%0a%0d%0aAAAAAAAA ... [Auffüllen auf 1024 Bytes]...
AAAAAAAAAAAAAAHTTP/1.1%20200%20OK%0d%0aContentType:%20text/html%0
d%0aLastModified:%20Sat,%2003%20Dec%202005%2001:23:45%20GMT%0d%0a
ContentLength:%2052%0d%0a%0d%0a<html><script>alert(document.cooki
e)</ script></html>
">
<frame src="http://www.opfer.example/index.html"> ... [19 weitere dieser <frame>s] ... </frameset>

Im Gegensatz zum Vergiften des Browser-Caches ist es nicht notwendig, zwei HTTP-Requests abwechselnd zu senden. Der Cross-Site-Scripting-Angriff ist auch erfolgreich, wenn die eingeschleuste zweite HTTP-Response einem weiteren HTTP Response Splitting Request zugeordnet wird.

Indirektes Vergiften von Cache-/Proxy-Servern

Das Vergiften des Browser-Caches unterscheidet sich von Angriffen auf andere Ziele in dem Punkt, dass der Angreifer den HTTP Response Splitting Request nicht selbst sendet, sondern von einem Dritten (in diesem Fall dem Benutzer des Browsers) senden lässt. So ist ihm ein Angriff auf ein Ziel möglich, auf das er selbst nicht zugreifen kann.

About Security: Die komplette Serie

Verbunden mit einem Cross-Site-Scripting-Angriff kann dieses Verfahren auch zum Angriff auf andere, nicht direkt zugängliche Ziele ausgenutzt werden. Ein derartiges Ziel sind zum Beispiel Proxy-Server innerhalb eines lokalen Netzes. Um deren Cache zu vergiften, kann über Cross-Site Scripting JavaScript-Code in einem Webbrowser im lokalen Netz eingeschleust werden, der dann einen HTTP-Response-Splitting-Angriff zum Vergiften des Caches des internen Servers startet. Zum Erzeugen der nötigen HTTP-Header kann beispielsweise ein XMLHttpRequest verwendet werden.

Durchführung des Angriffs

Der Angreifer lässt einen Benutzer eine Webseite öffnen, die beim Aufruf einen Cross-Site-Scripting-Angriff auslöst. Darüber wird JavaScript-Code in den Webbrowser des Benutzers eingeschleust, der einen HTTP-Response-Splitting-Angriff zum Vergiften des Proxy-Server-Caches startet.

Folgendes Beispiel (nach dem oben genannten Whitepaper) für den entsprechenden JavaScript-Code geht zur Vereinfachung von einigen Annahmen aus:

  • Ziel ist ein Apache-2.0-Forward-Proxy-Server
  • Als Browser wird der Internet Explorer 6.0 SP1 verwendet
  • Das verwundbare Skript auf dem Webserver setzt einen Cookie unter Verwendung vom Benutzer gelieferter Daten. Im Fall einer Redirection müsste die Race Condition des Internet Explorers berücksichtigt werden.
  • Der Browser verwendet HTTP/1.1 zur Kommunikation mit dem Proxy-Server. Andernfalls beendet der XMLHttpRequest die TCP-Verbindung nach jedem HTTP-Request.

1 var r = new ActiveXObject("Microsoft.XMLHTTP");
2 3 r.open("GET","http://www.opfer.example/index.html",false);
4 r.setRequestHeader("Pragma","no-cache");
5 r.send();
6 7 r.open("GET","http://www.opfer.example/SetLang.aspx?lang=%0d%0a
ContentLength:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aLastMo
dified:%20Sat,%2003%20Dec%202005%2001:23:45%20GMT%0d%0aConten
t-Length:%2023%0d%0aContentType:%20text/html%0d%0a%0d%0a<html
>Geschafft!</html>",false);
8 r.send();
9 10 r.open("GET","http://www.opfer.example/index.html",false);
11 r.send();

Das Skript geht wie in About Security #23 beschrieben vor:

  1. Zuerst wird eine gegebenenfalls im Cache vorhandene Version der Seite ungültig gemacht (Zeile 3 bis 5).
  2. Danach wird der HTTP-Response-Splitting-Angriff gestartet (Zeile 7 und 8).
  3. Zuletzt wird die Seite aufgerufen, die vergiftet werden soll (Zeile 10 und 11).

Jede für HTTP Response Splitting anfällige Seite ist auch für Cross-Site Scripting anfällig. Daher können auf diese Weise Caches vergiftet werden, auf die der Angreifer nicht direkt zugreifen kann.

In der nächsten Folge wird das Thema HTTP Response Splitting mit einem letzten Beispiel für einen Angriff abgeschlossen: Das Entführen von Webseiten mit sensitiven Informationen. Außerdem erfahren Sie, wie Sie HTTP-Response-Splitting-Angriffe erkennen und verhindern können.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Sichere Webanwendungen"

Kommentare

Konferenzen

JAX 2010

JAX 2010

3.- 7. Mai 2010
Rheingoldhalle, Mainz

Business Technology Days 2010

Business Technology Days 2010

4.- 6. Mai 2010
Rheingoldhalle Mainz

webinale 2010

webinale 2010

31.- 2. Juni 2010
Maritim proArte, Berlin

Railswaycon 2010

Railswaycon 2010

31.- 2. Juni 2010
Maritim proArte, Berlin

IPC Spring 2010

IPC Spring 2010

31.- 2. Mai 2010
Maritim proArte, Berlin

MobileDevCon 2010

MobileDevCon 2010

6.- 8. September 2010
Rheingoldhalle, Mainz

BASTA! 2010

BASTA! 2010

20.-24. September 2010
Rheingoldhalle, Mainz

Werbung
Top-Jobs

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

Ruby on Rails

RailsWay Magazin

Ruby on Rails

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

Bücher




Webhosting und Managed Hosting mit Host Europe