{myCanal} – Des pirates peuvent exfiltrer nos données

 

Coucou la compagnie,

 

 

Aujourd'hui point de longues intro, j'ai décalé pas mal de mes articles programmés pour vous mettre cette petite pépite qui je l'espère vous plaira ;)
Comme dirait le maître cuistot : "Bonne dégustation"

 

Tout d'abord un petit parallèle

Suite à mon précédent article sur MyCanal, j'ai eu pas mal de mails et de commentaires sur comment récupérer des vidéos lorsqu'on est abonné !
Il faut savoir que j'ai écrit l'article en tant que non abonné, avec les vidéos disponibles publiquement ... donc je n'ai pas spécialement pu tester sur des vidéos non publiques.
J'ai cependant eu un lecteur assez sympa (merci Suly) qui m'a permis d'analyser un peu les échanges qu'il y a sur du contenu abonné :
Lorsque vous regardez une vidéo en tant qu'abonné, vous allez charger un fichier "manifest" (cf. votre console développeur avec la touche F12 de votre clavier, onglet "network"

Dans ce fichier ... vous verrez le terme SmoothStreamingMedia ... en 2/3 clics sur le net on tombe sur ce sujet : https://stackoverflow.com/questions/9658310/how-to-download-iis-smooth-streaming-ism-as-mkv-or-avi

Et finalement on apprend qu'il existe un projet pour récupérer ces contenus vidéos au format mkv :
https://github.com/pinglossy/smoothget

Revenons à nos moutons

Comme toujours je cherche toujours un peu la petite bête ... et parfois je me fais un peu taper les doigts... mais c'est le jeu ma pauv' lucette ...
Ainsi donc, l'autre soir, je me mets à tester pour vous, le téléchargement des vidéos "abonnés" myCanal .
Quand soudain, je me rends compte que lorsque je me déconnecte ....

L'url qui sert à la déconnexion est la suivante :

http://pass.canal-plus.com/service/passLogout.php?bundle=site&sourceURL=https://www.mycanal.fr/&targetURL=https://www.mycanal.fr/

On se rend bien compte qu'il y a 2 paramètres importants dans cette requête ...
L'un pour préciser d'où l'on se déconnecte ... l'autre ... (celui qui nous intéresse) ... vers où l'on va !

Jusqu'ici rien de vraiment très grave n'est-ce pas ...

 

Injection de script

La variable "targetUrl" ne fait aucun contrôle, elle accepte absolument tout ... vous pourriez reprendre ce lien en remplaçant l'url de la variable "targetUrl"  par "https://google.com" ... vous seriez redirigé sur Google !

http://pass.canal-plus.com/service/passLogout.php?bundle=site&sourceURL=https://www.mycanal.fr/&targetURL=https://www.google.com

Nous pourrions donc évoquer un premier risque de phishing !
Un pirate qui inonderait les boîtes mails d'utilisateurs mycanal ... des utilisateurs qui verraient un véritable lien mycanal .... et paf dans le piège !

L'histoire ne s'arrête pas là ...

Nous allons à présent, évoquer LE risque !
Celui ... dont on ne doit pas prononcer le nom !

Non en fait, je vous rassure on peut le faire. Il s'agit tout bêtement d'une injection de script.

Si un pirate souhaite mettre un script malveillant au lieu d'une url, il peut le faire :

https://pass.canal-plus.com/service/passLogout.php?bundle=site&sourceURL=&targetURL=javascript:alert("Paf la mouche !")

Fourberie quand tu nous tiens

J'évoquais il y a peu dans un article sur Viadeo, la manière dont il était possible pour un pirate de rendre crédible une page en exploitant les iframes.
Je vous disais dans cet article qu'il était possible d'interdire l'utilisation d'iframe vers son site.

MyCanal ne l'a pas fait !

Il est donc parfaitement possible pour une personne mal intentionnée en quelques lignes de code
de dérober les cookies d'un utilisateur myCanal !
Pour cela rien de plus simple, quelques lignes de code cachées dans une page ... le pirate envoi un lien, et la victime n'a qu'un clic à faire.
Une iframe se charge vers la plateforme myCanal ... charge les données myCanal de l'utilisateur ... et exécute le script malveillant !

 

L’expérience

 

Depuis  la page de cet article, ouvrez votre console (touche F12 de votre clavier, onglet console)
Copiez-collez le code suivant, et validez par la touche entrée :

var html = document.getElementsByTagName('html')[0],
	ifr  = document.createElement('iframe');
ifr.src  = 'https://pass.canal-plus.com/service/passLogout.php?bundle=site&sourceURL=&targetURL=javascript:alert(document.cookie);'
html.appendChild(ifr);;

Au bout de quelques secondes, vous devriez voir apparaître vos cookies  !!!

 

Conclusion

Si vous êtes développeurs, je vous invite à :

  • Ne pas mettre dans vos url de déconnexion, une quelconque url de redirection non contrôlée et qui pourrait être altérée.
  • Si vous offrez un service en ligne avec les données de vos utilisateurs : interdire les iframes pointant vers votre plateforme (cf. article sur Viadeo)

Si vous êtes utilisateur ... faire gaffe, faire bien gaffe !
La sécurité aujourd'hui est de plus en plus mise à l'épreuve, et même dans un contexte où vous pourriez vous trouver sur un site parfaitement légitime, soyez bien parano ...
Un lien par mail, c'est toujours un copier-coller du lien dans le mode privé du navigateur.

Partagez ce contenu

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *