Samstag, 30. August 2008

News

präsentiert von: entwickler.com
Donnerstag, 18. August 2005

About Security #19: Spielarten des HTTP Request Smuggling, 2

In dieser Woche geht es um eine weitere Möglichkeit des HTTP Request Smuggling, und zwar um die Täuschung von Firewalls und Intrusion-Detection- bzw. Prevention-Systemen.

Check Points Firewall FW-1 (FP4-R55W Beta) prüft eingehende HTTP-Requests auf vielfältige Weise, um mögliche Angriffe zu erkennen. Dazu werden gespeicherte Signaturen unerwünschter Aktionen mit den HTTP-Requests verglichen. Durch HTTP Request Smuggling können diese Schutzfunktionen umgangen werden.

Folgendes Beispiel (nach [1, PDF]) basiert auf einem IIS-5.0-Webserver, der von einer FW-1- Firewall geschützt wird. Der IIS enthält einen Fehler bei der Verarbeitung von POST-Requests mit sehr langem Body: Nach 48 KByte (49152 Bytes) wird der Body abgeschnitten, wenn der Content-Type des Request nicht vom erwarteten Typ ist. Empfängt der IIS z.B. einen POST-Request für eine .asp-Seite mit einer Body-Länge von 48 KByte + x Byte ohne passenden Content-Type, werden die x Bytes als neuer Request betrachtet, während die FW-1 sie als Bestandteil des Body betrachtet.

Im folgenden soll /seite.asp eine .asp-Seite auf dem Webserver sein. Die folgenden Requests werden über die FW-1 Firewall an den IIS Webserver gesendet:


  1  POST /seite.asp HTTP/1.1
  2  Host: test 
  3  Connection: Keep-Alive
  4  Content-Length: 49223
  5  [CRLF]
  6  aaa...aaa   [49151 mal "a"]
  7  POST /seite.asp HTTP/1.0
  8  Connection: Keep-Alive
  9  Content-Length: 36
 10  [CRLF]
 11  POST /seite.asp HTTP/1.0
 12  Wegdamit: 
 13  POST /seite.asp?cmd.exe HTTP/1.0
 14  Connection: Keep-Alive
 15  [CRLF]

Jede Zeile mit Ausnahme der zwölften endet mit einem CRLF ("\r\n"). In Zeile 12 befindet sich ein Leerzeichen hinter Wegdamit:, aber kein CRLF.

Die FW-1-Firewall parst diese Requests folgendermaßen: Der erste Request hat eine Content-Length von 49.223 Bytes. Zeile 6 (49.151 mal a) und Zeile 7–10 (insgesamt 72 Bytes) werden als Body des ersten Request betrachtet. Als Zweites wird der Request ab Zeile 11 geparst. Das POST in Zeile 13 wird wegen des fehlenden CRLF in Zeile 12 als Wert des dortigen Wegdamit:-Headers betrachtet. Der zweite Request endet daher mit Zeile 15. Die Firewall würde das Muster cmd.exe in Zeile 13 als Nimda-Wurm erkennen, wenn es Bestandteil einer URL wäre. Da es hier aber als Teil des Headers betrachtet wird, wird es nicht erkannt. Daher wird cmd.exe durch die Firewall geschmuggelt.

Der IIS Webserver parst den ersten Request als POST-Request für eine .asp-Seite. Da der Request nicht den erwarteten Content-Type: application/x-www-form-urlencoded-Header enthält wird der Body nach 49.152 Bytes beendet. Der zweite Request beginnt daher in Zeile 7 und hat eine Content-Length von 36 Bytes. Als Body werden die Zeilen 11 und 12 betrachtet. Die Zeilen 13–15 werden danach als dritter Request geparst, sodass das cmd.exe durch die FW-1-Firewall zum IIS-Webserver geschmuggelt wurde. Genauso können andere bösartige URLs durch die Firewall geschmuggelt werden.

Zuletzt noch eine Übersicht über die geparsten Header:


1. Request 2. Request 3. Request
IIS/5.0 Zeilen 1–6 Zeilen 7–12 Zeilen 13–15
FW-1 R55W Zeilen 1–10 Zeilen 11–15

Die Schwachstelle in FW-1 wurde von Check Point behoben.

Weitere Angriffsmöglichkeiten
Außer den bisher vorgestellten Möglichkeiten für HTTP Request Smuggling hat Watchfire weitere Anomalien gefunden, die für einen Angriff ausgenutzt werden können ([1, PDF]):

  • Bei Requests mit zwei Content-Length-Headern werden von verschiedenen Servern nicht dieselben Header verwendet (Beispiele in About Security #17 und #18).
  • Von einem als HTTP-Proxy eingesetzten Apache vor Version 2.1.6 wurden bei Requests, die sowohl einen Transfer-Encoding: chunked-Header als auch einen Content-Length-Header enthalten, die verschiedenen Body-Teile zu einem Body zusammengesetzt. Es wurde aber weder ein eigener Content-Length-Header hinzugefügt noch ein bereits vorhandener Content-Length-Header angepasst oder gelöscht.
  • Eine Header-Zeile mit einem einzelnen CR, gefolgt von einem CRLF, wird von manchen Servern als HTTP-Header-Zeile betrachtet, während andere darin das Ende des Headers erkennen. Zusammen mit unterschiedlichen Interpretationen von Leerzeichen im Header können die Angriffe durchgeführt werden.
  • Bei GET-Requests mit Content-Length-Header wird vom DeleGate-Cache-Server kein Body verarbeitet, während manche Webserver einen erwarten.
  • CRLF Leerzeichen CRLF werden von der Check Point FW-1 und Squid in bestimmten Fällen als eine Fortsetzung des vorhergehenden Headers angesehen, während der IIS 5.0 darin das Ende des Headers erkennt.
  • Wie bereits im obigen Beispiel gezeigt, schneidet der IIS bei einem sehr langen Body ohne passenden Content-Type-Header den Body bei 49.152 Bytes ab.

Nächste Woche geht es um das Erkennen und Verhindern des HTTP Request Smuggling.

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


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!

Konferenzen

BASTA! 2008

BASTA! 2008

22.-26. September 2008
Rheingoldhalle, Mainz

SQLCON 2008

SQLCON 2008

22.-26. September 2008
Rheingoldhalle, Mainz

IPC 2008

IPC 2008

27.-31. Oktober 2008
Rheingoldhalle, Mainz

AJAX IN ACTION 2008

AJAX IN ACTION 2008

28.-31. Oktober 2008
Rheingoldhalle, Mainz

EKON 12

EKON 12

28.-31. Oktober 2008
Congress Centrum, Mainz

W-JAX 2008

W-JAX 2008

3.- 7. November 2008
ArabellaSheraton Hotel München

SOACON 2008

SOACON 2008

3.- 7. November 2008
Arabella Sheraton Hotel, München

JAX Asia 2008

JAX Asia 2008

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

Werbung
Top-Jobs

OLYMPUS EUROPA Holding GmbH

Web-Entwickler (m/w)

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

Gebit Solutions

Java Profis gesucht (m/w)

Hueber Verlag GmbH & Co. KG

Webdesigner/ Webprogrammierer (m/w)

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