Teil 3 – Reale Beispiele und Auswirkungen von HTTP Request Smuggling

Warum reale Beispiele so wichtig sind

HTTP Request Smuggling klingt abstrakt, solange man nur über Header wie Content-Length und Transfer-Encoding spricht. Erst wenn man sieht, was damit in echten Anwendungen passiert, versteht man das volle Risiko: Session-Hijacking, Cache Poisoning, Umgehung von Sicherheitsmechanismen – alles ist möglich.


Beispiel 1: Session Hijacking

Szenario

Eine App prüft Nutzer-Logins über Cookies. Ein Proxy (z. B. ein CDN wie Akamai) sitzt vor dem Backend (z. B. Apache oder Node.js).

Angriff

Der Angreifer schmuggelt einen zweiten Request hinter einem harmlosen ein:

POST / HTTP/1.1
Host: victim.com
Content-Length: 13
Transfer-Encoding: chunked

0

GET /profile HTTP/1.1
Host: victim.com
Cookie: session=attacker
  • Proxy liest: Content-Length = 13, Request zu Ende.
  • Backend liest: Transfer-Encoding = chunked, sieht 0 (Ende des ersten Requests), und interpretiert den Teil danach als zweiten Request.

Ergebnis

Der zweite Request läuft mit dem Cookie des Angreifers. Wenn kurz danach ein legitimer User denselben TCP-Stream nutzt (z. B. durch Connection Reuse), kann der Angriff dazu führen, dass die Antwort an den legitimen User geht, aber mit der Session des Angreifers. So entsteht ein Session Hijacking.


Beispiel 2: Cache Poisoning

Szenario

Eine Seite nutzt einen Caching-Proxy (z. B. Varnish). Der Cache speichert Antworten basierend auf den Requests.

Angriff

Der Angreifer schmuggelt einen Request, der den Cache vergiftet:

POST / HTTP/1.1
Host: victim.com
Content-Length: 4
Transfer-Encoding: chunked

5
abcde
0

GET /index.html HTTP/1.1
Host: victim.com
X-Forwarded-Host: attacker.com
  • Proxy denkt: Request fertig nach 4 Bytes.
  • Backend sieht: neuer Request (GET /index.html).
  • Der Backend-Server liefert /index.html, aber mit dem manipulierten Header.
  • Der Cache speichert diese manipulierte Antwort.

Ergebnis

Jeder nachfolgende Nutzer, der /index.html aufruft, bekommt die vergiftete Version – evtl. mit Angreifer-Inhalten.

Praxisfall

Genau so wurden mehrere CDNs in Bug-Bounty-Programmen ausgetrickst. Sicherheitsforscher konnten den Cache von globalen Webseiten vergiften und Millionen von Nutzern manipulierte Antworten ausliefern lassen.


Beispiel 3: WAF-Bypass

Szenario

Eine Firma nutzt eine Web Application Firewall (WAF), die alle Requests prüft, bevor sie an das Backend gehen.

Angriff

Der Angreifer schmuggelt eine SQL-Injection hinter einen harmlosen Request:

POST / HTTP/1.1
Host: victim.com
Content-Length: 10
Transfer-Encoding: chunked

0

POST /login HTTP/1.1
Host: victim.com
Content-Length: 40

username=admin'--&password=123
  • WAF prüft nur den ersten Request → harmlos.
  • Backend sieht den zweiten Request mit der SQL-Injection.

Ergebnis

Die WAF wird komplett umgangen. Angreifer können trotz teurer Sicherheitslösungen die Backend-Anwendung attackieren.


Beispiel 4: Bug-Bounty-Report von James Kettle (PortSwigger)

James Kettle, ein bekannter Sicherheitsforscher, machte 2019 HTTP Request Smuggling wieder populär.

  • Er zeigte, dass Akamai, Amazon und andere große Anbieter anfällig waren.
  • Angriffe reichten von Cache Poisoning bis zu Session Hijacking.
  • Mehrere Bounties in Höhe von 5-stelligen Summen wurden ausgezahlt.

Sein Talk “HTTP Desync Attacks” brachte das Thema zurück auf die OWASP Top 10 Radar.


Beispiel 5: Angriff auf mehrere Banken

Forscher fanden 2020 HRS-Schwachstellen bei mehreren Banken, die Load Balancer + Backend nutzten.

  • Angreifer konnten Requests in andere Sessions einschleusen.
  • Teilweise war es möglich, Überweisungs-Requests von Kunden zu manipulieren.
  • Das zeigte: HRS ist kein „akademisches Problem“, sondern betrifft auch hochsensible Branchen.

Warum die Auswirkungen so groß sind

  1. Globale Infrastruktur
    Viele Webseiten laufen über CDNs und Proxies. Eine Lücke dort hat globale Reichweite.
  2. Unsichtbarkeit
    Proxies loggen nur, was sie selbst sehen – der „geschmuggelte“ Teil taucht oft nicht in Logs auf.
  3. Vielseitigkeit
    HRS kann für Session Hijacking, Cache Poisoning, WAF-Bypass oder sogar Datenexfiltration genutzt werden.
  4. Schwer zu patchen
    Es reicht nicht, das Backend zu fixen. Proxy und Backend müssen dieselben Parsing-Regeln haben.

Analogie: Zwei Türsteher im Club

Stell dir einen Club mit zwei Türstehern vor:

  • Der erste zählt Leute nach ihren Eintrittskarten.
  • Der zweite zählt Leute nach ihren Handstempeln.

Ein Angreifer kommt mit einem Ticket, das halb als Ticket, halb als Stempel aussieht.

  • Türsteher 1: „Alles gut, einer.“
  • Türsteher 2: „Moment, das sind zwei Leute.“

So schmuggelt er einen zweiten „unsichtbaren“ Gast rein – genau wie beim HRS.


Was man aus den Beispielen lernt

  • HRS ist praktisch ausnutzbar, nicht nur theoretisch.
  • Angriffe können Millionen Nutzer betreffen (Cache Poisoning).
  • Selbst große Firmen mit WAF und CDN waren anfällig.
  • HRS eignet sich perfekt für Bug-Bounty-Jäger, weil die Ausnutzung oft spektakulär und der Impact hoch ist.

Was du bis hier mitnehmen solltest

  • Session Hijacking: Angreifer kann Requests anderer Nutzer übernehmen.
  • Cache Poisoning: Manipulierte Inhalte landen im Cache und erreichen tausende Nutzer.
  • WAF-Bypass: Sicherheitsmechanismen werden komplett umgangen.
  • Bug-Bounty-Stories zeigen: Auch Amazon, Akamai, Banken und große Plattformen waren betroffen.
  • Die Auswirkungen reichen von Datenverlust über Kontoübernahme bis hin zu massiver Manipulation von Webseiten.

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert