Modification d’objets sérialisés

Modifying serialized objects

Ce laboratoire utilise un mécanisme de session basé sur la sérialisation et présente une vulnérabilité permettant une élévation de privilèges. L’objectif est de modifier l’objet sérialisé stocké dans le cookie de session afin d’obtenir des privilèges administrateur, puis de supprimer l’utilisateur carlos.

Un compte utilisateur est fourni pour démarrer :

  • Identifiant : wiener

  • Mot de passe : peter

Observation initiale

Après l’authentification, une requête de connexion est envoyée :

Le serveur répond avec un cookie de session :

Analyse du cookie de session

Le contenu du cookie est encodé en Base64. Une fois décodé, on obtient un objet PHP sérialisé :

Cet objet contient :

  • le nom d’utilisateur (username)

  • un indicateur de privilèges administrateur (admin), défini à false (b:0)

Réencodage de l’objet en Base64 :

Modification de l’objet sérialisé

L’objet peut être modifié côté client avant d’être renvoyé au serveur.

  1. Changement du nom d’utilisateur en carlos :

  2. Activation des privilèges administrateur en passant admin à true :

  1. Réencodage de l’objet en Base64 :

Exploitation

Le cookie de session est remplacé par la nouvelle valeur modifiée.

Mis à jour