Outils pour utilisateurs

Outils du site


cyber:vulnerabilite:html_cookies

**Ceci est une ancienne révision du document !**

HTTP - Cookies

Description

Cette vulnérabilité repose sur l'utilisation de cookies HTTP pour stocker des informations d'identification, d'état ou d'autres données critiques sur les systèmes clients. Il existe différentes formes d'exploitation de cette vulnérabilité.

  • La première forme consiste à accéder aux cookies HTTP pour extraire les données potentiellement sensibles qu'ils contiennent.
  • La seconde forme consiste à intercepter ces données lorsqu'elles sont transmises du client au serveur. Les informations interceptées sont ensuite utilisées par l'adversaire pour se faire passer pour l'utilisateur ou la session à distance.
  • La troisième forme est celle où le contenu du cookie est modifié par l'adversaire avant qu'il soit renvoyé au serveur. Dans ce cas, l'adversaire cherche à convaincre le serveur cible de fonctionner sur la base de ces informations falsifiées.

Prérequis d'exploitation

Pour exploiter cette vulnérabilité, il est nécessaire d’avoir accès à une application se basant sur la gestion de cookies de session pour fonctionner. Ces derniers doivent être présents au niveau des requêtes HTTP entre le client et le serveur.

Connaissances nécessaires

  • Maîtrise du protocole HTTP (notion d'en-tête Cookie) ;
  • Maîtrise de la notion de session utilisateur ;
  • Connaissances de base sur des outils de modification et/ou d’interception de requêtes (Burp, Curl).

Outils nécessaires

  • Avoir accès à la console développeur du navigateur (Firefox, Chrome) et à des outils de modification et/ou d’interception de requêtes (Burp, Curl).

Flux d'exécution

Explorer

Naviguer sur l’application afin de générer un cookie. Il peut s'agir d'un utilisateur final légitime souhaitant élever ses privilèges ou d'une personne écoutant le réseau pour obtenir un cookie HTTP.

Expérimenter

Tenter d'obtenir des informations sensibles à partir du cookie en essayant de le décoder par diverses méthodes (selon son encodage). Essayer de modifier ou de remplacer les valeurs des attributs que contient le cookie afin de contourner les contrôles de sécurité de l'application.

Exploiter

Conséquences potentielles

Une exploitation réussie de ce type de vulnérabilité peut permettre :

  • L'élévation de ses privilèges vers un compte disposant de plus de droits (admin) ;
  • L'accès à un espace restreint de l’application.

Contres-mesures

Les contre-mesures suivantes peuvent être mises en œuvre :

  • Utilisez la validation des entrées pour les cookies ;
  • Utilisez SSL/TLS pour protéger le cookie en transit (protocole HTTP) ;
  • Assurez-vous que le serveur web met en œuvre tous les correctifs de sécurité pertinents.

Comment cela fonctionne

Le scénario suivant peut être joué via l’exploitation de cette vulnérabilité :

  • Un attaquant parvient à intercepter les requêtes HTTP d'une application à l'aide d'une attaque de type MiTM (Man in The Middle). Il parvient alors à récupérer les cookies d'un utilisateur et se connecte avec ce cookie. Il peut alors usurper son identité et lancer une attaque de type phishing afin de récupérer ou pivoter sur d'autres comptes utilisateurs ou administrateurs de l’application en se faisant passer pour l'utilisateur en question.

Exemple 1

Voici un exemple de requête HTTP simple avec un cookie contenant une donnée sensible :

GET /page.php HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cookie: sessionID=abc1234; username=john.doe; password=MySensitivePassword

Dans cette requête, nous envoyons un cookie nommé “password” qui contient une donnée sensible, en l'occurrence le mot de passe “MySensitivePassword”.

Il est important de noter que l'envoi de données sensibles (par exemple des mots de passe) dans des cookies est à proscrire car ils peuvent être facilement interceptés par de potentiels attaquants.

Exemple 2

L'extrait de code suivant récupère la valeur d'un cookie de navigateur pour déterminer le rôle du visiteur. Il est facile pour un attaquant de modifier la valeur “role” trouvée dans le cookie stocké localement, permettant ainsi une potentielle escalade des privilèges.

Cookie[] cookies = request.getCookies();
for (int i =0; i< cookies.length; i++) {
	Cookie c = cookies[i];
	if (c.getName().equals("role")) {
		userRole = c.getValue();
	}
}

Exemple 3

Dans l'exemple suivant, un cookie nommé “authenticated” est utilisé pour déterminer si un utilisateur doit être autorisé ou non à accéder à un système.

La modification de la valeur d'un cookie du côté client est triviale, mais de nombreux développeurs supposent que les cookies sont essentiellement immuables.

boolean authenticated = new Boolean(getCookieValue("authenticated")).booleanValue();
if (authenticated) {
	...
}

CWEs

References

Retour fiches vulnérabilités

cyber/vulnerabilite/html_cookies.1752239356.txt.gz · Dernière modification : 2025/07/11 15:09 de admin