Cross Site Tracing - XST
Définition
L'attaque XST (pour Cross Site Tracing) est une attaque dérivée du
XSS. Elle a pour objectif d'exploiter la méthode HTTP
trace qui consiste à renvoyer au client l'écho de sa requête. Il s'agit en fait d'une méthode très rarement utilisée, voir supprimée de nombreux serveurs Web. Cependant, elle est toujours présente sur le serveur
Apache.
Cette attaque a été forgée par les pirates pour pouvoir voler les cookies de la victime. En effet, j'avais mentionné que l'attaque XSS permettait jusqu'à un certain moment de subtiliser les cookies des clients, mais cette pratique ne marche plus vu que les cookies sont devenues exclusivement récupérables via des requêtes HTTP (HTTP Only).
XST exploite un script AJAX qui n'est rien d'autre qu'un bout de code Javascript mais qui a la possibilité de passer des requêtes HTTP au serveur (notamment la requête
trace). Ce script AJAX est déposé sur le serveur de la même manière qu'un script XSS (via les formulaires ou l'URL). Quand la victime le charge, sans le vouloir, il envoie une requête au serveur avec la méthode trace, sachant que cette requête renferme plein d'informations y compris le cookie propre au site visité. Celui-ci sera renvoyé au client par le serveur (puisque c'est le principe de fonctionnement de la méthode trace: envoyer l'écho de la requête). Le pirate fait alors en sorte de l'intercepter en chemin par d'autres attaques comme
TCP Session Hijacking et le tour est joué.
Si le pirate subtilise le cookie du client, alors il peut tout simplement usurper son identité auprès du site qui a généré ce cookie là. Il peut alors se passer de l'authentification et accéder directement à l'espace personnel de la victime.
Comment s'en protéger?
Au niveau du code PHP
On procédera exactement aux mêmes contre-mesures vues pour le XSS qui se base principalement sur le contrôle et le filtrage des entrées des clients
Au niveau de la configuration du serveur.
Puisque la méthode
trace n'est plus d'actualité, alors il faut la désactiver sur le serveur Apache. Par défaut elle est désactivée, mais mieux vaut en avoir le coeur net.
Pour ce faire on se rend sur le fichier
security (souvent placé sur /etc/apache2/conf.d/security) et on ajoute (modifie) la ligne suivante comme ceci:
TraceEnable Off