Table des matières
The Epic Conclusion
J'ai donc essayé la technique d'images éxecutables sur le serveur de mon hotlinker préféré. Conclusions : ça marche !
Tout ce qu'il faut est un serveur qui affiche une image de votre serveur; ça peut être un forum, qui ne sauvegarde pas les images de signature en local, par exemple, mais ça peut aussi être quelqu'un qui s'amuse à hotlinker les images des autres.
Il suffit ensuite de créer un fichier .php à la place de l'image : Si votre image s'appelle, par exemple, iconeTwitter.png, vous créez un fichier texte contenant ceci :
/*
Executable Image
Inspired by http://www.youtube.com/watch?v=SeVz36FN61w
*/
// Trucs fun
// (...)
// Envoi de l'image
$name = './iconeTwitter.png';
$fp = fopen($name, 'rb');
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));
fpassthru($fp);
exit;
?>
Renommez ce fichier texte en iconeTwitter.png. Il ne vous reste plus qu'à dire à Apache, votre serveur web, d'analyser ce .png comme étant du code. Dans mon cas, l'image était seule dans son dossier, j'ai donc pu écrire le fichier .htaccess suivant :
AddType application/x-httpd-php .png
Si vous avez plusieurs images .png dans le même dossier, spécifiez quelle est la fausse image ainsi :
<Files exec.jpg>
DefaultType application/x-httpd-php
</Files>
Et voilà ! La prochaine fois que quelqu'un demandera cette image de votre serveur, il recevra à son insu un script, capable d'éxecuter tout ce que vous voulez.
Que faire sur le serveur de l'autre ?
Que mettre dans la partie indiquée "(...)" dans mon code php ?
Commencons par installer un petit tracker :
// Trucs fun
$valeurs = Array(
$_SERVER['REQUEST_TIME'],
$_SERVER['HTTP_USER_AGENT'],
$_SERVER['QUERY_STRING'],
$_SERVER['REMOTE_ADDR'],
$_SERVER['HTTP_REFERER']
);
$ligne = implode($valeurs, ';');
if($fh = @fopen('logfile.csv', 'a+' ))
{
fputs($fh, $ligne, strlen($ligne));
fclose($fh);
}
Avec ça, j'obtient un fichier Excel contenant l'adresse ip de tout ceux qui sont venus voir le site http://www.val-de-loire-reservations.com/. On se rend compte qu'assez peu de monde visite ce site, malheureusement pour eux; en une semaine je n'ai eu que quelques entrées dans le fichier de log.
Que faire maintenant ? Je n'ai plus trop d'idées, je crois que je vais simplement retirer l'image de mon serveur et leur dire d'arrêter d'utiliser la bande passante des autres.
Commentaires
Belle leçon en conclusion !
Ba c'est quand même un peu un échec, je pensais la technique plus riche en termes de possibilités, et finalement je me suis lassé rapidement.
Je n'ai pas reçu de réponse à mon mail, mais les images twitter et facebook ont disparu du site.