25
Feb
2011

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

1. le 25 f?vrier 2011 (12 h 40), par guingui :

Belle leçon en conclusion !

Réponse de Manu

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.

2.Commentaire de l'auteur, le 01 mars 2011 (15 h 36) :

Je n'ai pas reçu de réponse à mon mail, mais les images twitter et facebook ont disparu du site.

L'ajout de commentaires est désactivé.

Manu