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.