<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=HTTP_Response_Splitting</id>
	<title>HTTP Response Splitting - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=HTTP_Response_Splitting"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=HTTP_Response_Splitting&amp;action=history"/>
	<updated>2026-06-01T04:17:28Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=HTTP_Response_Splitting&amp;diff=814842&amp;oldid=prev</id>
		<title>imported&gt;Matthäus Wander: HC: Ergänze Kategorie:HTTP</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=HTTP_Response_Splitting&amp;diff=814842&amp;oldid=prev"/>
		<updated>2023-07-24T14:41:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;a href=&quot;/index.php?title=WP:HC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:HC (Seite nicht vorhanden)&quot;&gt;HC&lt;/a&gt;: Ergänze &lt;a href=&quot;/index.php/Kategorie:HTTP&quot; title=&quot;Kategorie:HTTP&quot;&gt;Kategorie:HTTP&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;HTTP Response Splitting&amp;#039;&amp;#039;&amp;#039; (dt.: Aufteilung der [[Hypertext Transfer Protocol|HTTP]]-Antwort) ist eine [[Sicherheitslücke]], die zur Durchführung von [[Cross-Site-Scripting]]-Attacken, (Cross-User-)[[Defacement]]s, &amp;#039;&amp;#039;Web cache poisoning&amp;#039;&amp;#039; und ähnlichen [[Exploit]]s verwendet werden kann.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Um die Attacke durchzuführen, werden mehrere [[Zeilenvorschub|Zeilenvorschübe]] gefolgt von den Daten des Angreifers per [[Header-Injection]] in den [[Header]] einer HTTP-Antwort eingefügt. Im HTTP-Standard signalisiert die erste Leerzeile das Ende des Header-Bereichs und damit in der Regel den Beginn der Nutzdaten. Wenn die Webanwendung es versäumt, Benutzereingaben zu prüfen und damit Zeilenvorschübe in einem Header erlaubt, dann kann ein möglicher Angreifer die Kontrolle über die Nutzlast übernehmen und die HTTP-Antwort in zwei Teile zerteilen. Wird für weitere Anfragen die gleiche TCP-Verbindung genutzt ([[HTTP-Pipelining]]), dann erscheint der zweite Teil der geteilten Antwort als Antwort auf die nächste Anfrage.&lt;br /&gt;
&lt;br /&gt;
Gemäß dem Standard ist nur die Kombination „CR&amp;amp;nbsp;LF“ ([[carriage return]] + [[linefeed]], in vielen Programmiersprachen als &amp;lt;code&amp;gt;„\r\n“&amp;lt;/code&amp;gt; darstellbar) das gültige Ende einer Header-Zeile. Allerdings akzeptieren viele [[User Agent]]s auch ein einzelnes Auftreten von CR oder LF als Zeilenende.&lt;br /&gt;
&lt;br /&gt;
Beim Benutzer besteht die zweite Antwort also aus den vom Angreifer injizierten Daten. Setzt dieser nun gezielt HTML oder [[JavaScript]] ein, so kommt es zur schlichten Verunstaltung (Defacement) oder sogar schwerwiegenden [[Cross-Site-Scripting]]-Angriffen.&lt;br /&gt;
&lt;br /&gt;
Beim „Web Cache Poisoning“ (dt.: [[Cache]]-Vergiftung) wird der Header so modifiziert, dass Cache-relevante Header-Felder verändert werden, um die veränderte Seite in den Cache eines [[Proxyserver|Webproxy]] einfließen zu lassen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Angenommen sei eine Seite, deren Code ungeprüft eine GET-Variable in die Header übernimmt. Hier in [[PHP]]:&lt;br /&gt;
 header(&amp;quot;Location: &amp;quot;.$_GET[&amp;quot;seite&amp;quot;].&amp;quot;\r\n&amp;quot;);&lt;br /&gt;
Eine gutartige Anfrage könnte den Parameter &amp;lt;code&amp;gt;seite&amp;lt;/code&amp;gt; z.&amp;amp;nbsp;B. auf &amp;lt;nowiki&amp;gt;http://de.wikipedia.org&amp;lt;/nowiki&amp;gt; setzen. Die HTTP-Antwort könnte dann so aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot; style=&amp;quot;border: none&amp;quot;&amp;gt;&lt;br /&gt;
 HTTP/1.1 301 Moved Permanently&lt;br /&gt;
 Location: http://de.wikipedia.org/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Eine bösartige Seite allerdings könnte einen kompliziert aussehenden String wie den folgenden senden: &amp;lt;code&amp;gt;%0d%0a%0a%3Chtml%3E%3Cbody%3Eerste Antwort%3C/body%3E%3C/html%3E%0d%0a%0d%0aHTTP/1.1 200 OK%0d%0aContent-Type: text/html%0d%0a%0d%0a%3Chtml%3E%3Cbody%3Ezweite Antwort%3C/body%3E%3C/html%3E&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
„Übersetzt“ man die URL-Kodierungen und injiziert diese wie oben in die Antwort, so erhält man&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 HTTP/1.1 301 Moved Permanently&lt;br /&gt;
 Location:&lt;br /&gt;
 &amp;lt;html&amp;gt;&amp;lt;body&amp;gt;erste Antwort&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 HTTP/1.1 200 OK&lt;br /&gt;
 Content-Type: text/html&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;html&amp;gt;&amp;lt;body&amp;gt;zweite Antwort&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Es wurde also die eigentliche Antwort um eine zweite ergänzt. Diese Antwort würde jetzt bei der nächsten Anfrage über die gleiche HTTP-Verbindung an den Browser oder Proxy gesendet werden, obwohl dieser eigentlich eine andere Anfrage gestellt hat.&lt;br /&gt;
&lt;br /&gt;
== Abhilfe ==&lt;br /&gt;
Abhilfe schafft das gründliche Überprüfen aller Eingabeparameter, bevor diese in einen Header geschrieben werden. Dies kann auch von einer Bibliotheksfunktion übernommen werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Sicherheitslücke|Http Response Splitting]]&lt;br /&gt;
[[Kategorie:HTTP]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Matthäus Wander</name></author>
	</entry>
</feed>