F5-Glossar

HTTP-Header-Injektion

Was ist HTTP-Header-Injection?

HTTP-Header-Injection ist eine Angriffsmethode, die Schwachstellen in Applications ausnutzt. Durch das Einbetten schädlicher Zeichenfolgen, einschließlich Wagenrücklauf- und Zeilenvorschubzeichen (CRLF), in an den Webserver gesendete HTTP-Anfragen können Angreifer HTTP-Antworten manipulieren. Applications , die vom Benutzer bereitgestellte Parameter ohne Bereinigung direkt in HTTP-Antwortheadern speichern, sind für diese Art von Angriffen besonders anfällig.

Stellen Sie sich beispielsweise ein Szenario vor, in dem ein Browser die folgende Anfrage mit einem Parameter sendet:

http://f5.com/index.html?status=1

Wenn die Application den Parameter „status=1“ für die Sitzungsverwaltung verwenden möchte, gibt sie möglicherweise eine HTTP-Antwort wie die folgende zurück:

HTTP/1.1 200 OK
...
Set-Cookie:status=1

Nehmen wir nun an, die Anfrage wird mit der folgenden manipulierten Eingabe geändert:

http://f5.com/index.html?status=1<CRLF><CRLF><html><body><script>~</script></body></html>

Die HTTP-Antwort der Application würde wie folgt geändert:

HTTP/1.1 200 OK
...
Set-Cookie:status=1
<Leerzeile>
<html><body><script>~</script></body></html>

In HTTP-Antworten wird jeder Inhalt nach zwei CRLF-Zeichen (Leerzeilen) als Antworttext behandelt und vom Browser gerendert. Wenn der Antworttext schädliches JavaScript enthält, führt der Browser es aus, was zu potenziellen Sicherheitsverletzungen führen kann. Darüber hinaus können Angreifer Eingaben so gestalten, dass Header-Inhalte wie die folgenden eingefügt werden:

<CRLF>Set-Cookie:PHPSESSID=abc

Dadurch würde eine bestimmte Sitzungs-ID im Browser festgelegt und Sitzungsfixierungsangriffe ermöglicht.

So verhindern Sie die HTTP-Header-Injection:

  • Desinfektion: Validieren und bereinigen Sie die in den Headern der HTTP-Anforderungen empfangenen Parameter, um schädliche Zeichenfolgen zu neutralisieren.
  • Web Application Firewall (WAF): Da eine konsistente Bereinigung aller Applications schwierig ist, ist die Bereitstellung einer WAF eine effektive Lösung. Eine WAF überwacht den Datenverkehr auf Anwendungsebene und kann Anfragen blockieren, die als Angriffe eingestuft werden. Dadurch werden die Risiken einer HTTP-Header-Injektion gemindert.