SOME (Same Origin Method Execution)
Il s'agit d'une attaque web… à expliquer briévement ici. Pour plus d'info sur le sujet, cf. la biblio ci-dessous.
Démonstration
La démonstration suivante a été mise en oeuvre avec le navigateur Google Chrome.
Considérons le site web du domaine labri.fr et en particulier la page http://www.labri.fr/perso/esnard/php/attackme.html…
- attackme.html
<html> <script> function hello() { document.write("hello world!"); } function hack() { document.write("you hack me!"); } hello(); </script> </html>
Par ailleurs, le site possède un callback endpoint vulnérable (typiquement du JSONP ou du Flash). Ici le endpoint vulnérable est juste un programme callback.php (http://www.labri.fr/perso/esnard/php/callback.php), qui prend deux arguments : une fonction de callback et un argument (arg) à passer à la fonction callback. Par exemple :
En pratique, le code PHP se contente d'éxécuter une fonction JavaScript :
- callback.php
<?php $callback = isset($_GET['callback']) ? $_GET['callback'] : "document.write"; $arg = isset($_GET['arg']) ? $_GET['arg'] : "hello world!"; print "<html><script> $callback(\"$arg\"); </script></html>"; ?>
Imaginons que la victime souhaitant visiter la page http://www.labri.fr/perso/esnard/php/attackme.html y accède en cliquant sur un lien frauduleux http://aurelien.esnard.emi.u-bordeaux.fr/demo/some-attack/attack-click.html, qui le redirige automatiquement vers le site souhaité…
Par exemple : Page Perso de A. Esnard
Afin de contourner les popups blocker (celui interne à Google Chrome et/ou les plugins comme AdBlock), ils existent de multiples techniques. La plus simple (même si ce n'est pas discret) consiste à ouvrir le popup après un click utilisateur…