Mittwoch, 8. Februar 2012 |
Ü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.
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.
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.
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.
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:
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:
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!
About Security – Übersicht zum aktuellen Thema "Sichere Webanwendungen"