![]() |
|
URL dieser Newsmeldung:
08.09.2005
About Security #22: HTTP Response Splitting, 2Welche Schwierigkeiten es beim in About Security #21 vorgestellten HTTP Response Splitting gibt, erfahren Sie in dieser Folge. N E U ! Security
aktuell HTTP Response Splitting ist immer dann möglich, wenn nicht korrekt gefilterte Benutzereingaben Bestandteil von HTTP-Responses werden. Außer in den bereits erwähnten Fällen der Redirection Responses und des Setzens von Cookies kann dies auch bei den von einigen Webservern unterstützten individuellen Skripten zur Fehlerbehandlung passieren. Außerdem können Webanwendungen die HTTP-Responses durch in den meisten APIs vorhandene Funktionen beliebig manipulieren. Behandlung der BenutzereingabenDie Ausnutzung einer Schwachstelle scheitert unter Umständen an der Behandlung der Eingaben. Manche API-Funktionen filtern CR- und LF-Zeichen aus, erzeugen eine Fehlermeldung oder URL-kodieren die Eingabe.
Die Eingaben können auch automatisch verändert werden, wenn
bestimmte Zeichen darin vorkommen. Zum Beispiel interpretiert ASP.NET
1.0/1.1 die Daten als UTF-8 und ignoriert Zeichenketten, die in UTF-8
ungültig sind. Das Zeichen Für die manipulierten Header werden nur harmlose ASCII-Zeichen benötigt. Problematisch ist der Response Body. Wird das Ergebnis im Internet Explorer angezeigt, kann der Body in UTF-7 kodiert werden. Dadurch wird jedes Unicode-Zeichen zu einer Folge von ASCII-Zeichen. Danach besteht keine Gefahr mehr, dass die Daten umkodiert werden oder einen Fehler verursachen. Zu lange URLs
In manchen Fällen wird eine sehr lange HTTP-Response benötigt.
Bei einem Angriff über HTTP-GET-Requests kann der
dafür
nötige lange URL zu Problemen führen, da manche beteiligte
Systeme zu lange URLs zurückweisen. HTTP-POST-Requests
sind
davon nicht betroffen, da die Daten dort im Request Body übertragen
werden. Ist ein URL für einen GET-Request zu
lang, kann
stattdessen oft ein POST-Request verwendet
werden, da die
Webanwendung nicht zwischen beiden Methoden unterscheidet. Ist dies
nicht
möglich, können die Daten eventuell in mehreren Headern
übertragen und/oder so kodiert werden, dass nach einer Umkodierung
durch den Webserver oder die Webanwendung die nötige Länge
erreicht wird. Zum Beispiel wird ein vom Angreifer gesendetes
Erkennen der zweiten HTTP-ResponseFür einen erfolgreichen Angriff muss das Angriffsziel (Cacheserver oder Webbrowser) zwei HTTP-Responses erkennen. Dies ist nicht so selbstverständlich, wie es nach dem Beispiel in About Security #21 aussieht. Der Erfolg hängt davon ab, wie die Antwort interpretiert und das Ende bzw. der Anfang einer HTTP-Response erkannt werden. In folgenden drei Fällen konnten HTTP-Response-Splitting-Angriffe erfolgreich durchgeführt werden (Amit Klein, "Divide and Conquer - HTTP Response Splitting, Web Cache Poisoning Attacks, and Related Topics", (PDF)):
Vergiften von WebcachesDie vergiftete HTTP-Response muss meist einen Last-Modified-Header mit einem Datum in der Zukunft enthalten, um gecached zu werden. Beim Vergiften von Browser-Caches kommen weitere Anforderungen hinzu: Da der Browser einen If-Modified-Since-Header in seinem Request mitschickt, muss der Angreifer sicherstellen, dass der Server mit dem HTTP-Status 304 (Unmodified) antwortet. Außerdem muss die angeforderte Ressource existieren und cachebar sein. Beim Vergiften von Cacheservern ist die Situation einfacher, da diese Browser-Requests nur an den Webserver weiterleiten, wenn sie explizit dazu aufgefordert werden oder der Cacheinhalt veraltet ist. Auch können auf dem Webserver nicht existierende Ressourcen vergiftet werden. Einige Proxy-Server aktualisieren ihren Cache in regelmäßigen Abständen, indem sie die Requests direkt an den Webserver weiterleiten. In diesem Fall muss der Angreifer seinen Angriff regelmäßig wiederholen, um seine vergifteten Daten in den Cache zu schreiben. Nachdem die Grundlagen und Schwierigkeiten des HTTP Response Splittings beschrieben wurden, geht es in der nächsten Folge um die praktische Durchführung eines solchen Angriffs. 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"
|
||
|