![]() |
|
URL dieser Newsmeldung:
11.08.2005
About Security #18: Spielarten des HTTP Request Smuggling, 1In dieser Woche geht es um weitere Möglichkeiten des HTTP-Request-Smuggling. Wir betrachten dabei das Request Hijacking und in einem zweiten Schritt das Request Credential Hijacking.
Request Hijacking
Im folgenden Beispiel (nach [1, PDF] ) sei der Parameter
[Zeile 11 ist dabei, wie auch bei späteren Beispielen, eine einzige
Zeile. Der Umbruch dient nur der besseren Lesbarkeit.]
Ein Microsoft ISA/2000 Proxy-Server parst das Beispiel als einzelnen
POST-Request mit einer Content-Length von 195 Bytes (Zeilen 1–11). Ein
Tomcat Web-/Application-Server parst es als einen vollständigen
POST-Request mit einer Content-Length von 10 Bytes (Zeilen 1–7
einschließlich des Leitet der ISA-Server danach zum Beispiel einen GET-Request von einem Client an den Tomcat-Server weiter, wird von diesem das erste empfangene Byte als Vervollständigung des gespeicherten Requests betrachtet. Der Rest des neuen Requests wird als ungültig verworfen und der vervollständigte gespeicherte Request beantwortet:
Der Client erhält als Antwort eine HTML-Seite mit dem eingeschleusten
JavaScript-Code
Genauso kann jeder beliebige andere JavaScript-Code eingeschleust werden. Der Angreifer kann auch die übertragenen Cookies und Daten der HTTP-Authentifikation stehlen. Diese befinden sich in den HTTP-Headern des Client-Requests. Durch entsprechende Wahl des Content-Length-Headers in Zeile 9 kann der Angreifer diese Daten in die Antwort an den Client schreiben lassen, von wo aus er sie sich vom gleichzeitig eingeschleusten JavaScript-Code zusenden lässt: Der unvollständige HTTP-Request in den Zeilen 7–11 umfasst deutlich weniger als die angegebene Content-Length von 600 Bytes. Dadurch werden die ersten rund 300 Bytes des nächsten Requests in die Antwort integriert. Die darin enthaltenen HTTP-Header liefern die gewünschten Informationen wie Cookies des Clients, Authentifikationsdaten und die angeforderte URL, die ebenfalls sensitive Informationen enthalten kann.
Request Credential Hijacking
Sendet der Client danach einen Request wie zum Beispiel
vervollständigt der Tomcat-Server damit den unvollständigen Request zu
und führt ihn aus: Das Skript /ein_skript.jsp wird mit
den Authentifikationsdaten des Clients ausgeführt und das Ergebnis an
den Client geschickt.
Nächste Woche geht es um weitere Möglichkeiten des HTTP-Request-Smuggling. Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder als Kommentar an die Kolumne anfügen.
|
||
|