Web Security Academy

Insecure deserialization - Lab : Using application functionality to exploit insecure deserialization

Objectif :

  • Supprimer le fichier morale.txt se situant dans le répertoire personnel d'une personne se nommant Carlos dans le serveur distant.

Solution :

Lorsqu'on lance le lab, on arrive sur la première page d'un blog. On aperçoit que l'on peut se loguer avec un compte utilisateur en appuyant sur "Account login" en haut à droite.

En utilisant les identifiants fournis dans l'énoncé (nom de compte : wiener ; mot de passe : peter ), on se connecte au site en tant que client ordinaire. Un cookie de session a été créé et va désormais apparaître parmi les headers des requêtes envoyées par le navigateur au serveur :

En utilisant un outil pour analyser les requêtes émises (par exemple Burp Suite), on extrait notre cookie de session codé en Base64 et on le décode. Ce qui nous donne la chaîne de caractères suivante :

O:4:"User":3{s:8:"username";s:6:"wiener";s:12:"access_token";s:32:"gzr8Wa2Yu1BCZ2Ar1azumINITvSeYfnI";s:11:"avatar_link";s:19:"users/wiener/avatar";}

On remarque aussi que lorsque l'on accède à la section permettant de modifier les informations personnelles (en cliquant sur My account), on peut supprimer le compte en cliquant sur Delete account. Ce qui va notamment supprimer le fichier stocké dans le serveur servant d'avatar pour ce compte.

En regardant plus en détail le cookie, on aperçoit que le dernier attribut correspond au chemin du fichier dans le serveur servant d'avatar pour le compte.

On va modifier ce chemin et le remplacer par celui du fichier morale.txt, se trouvant dans le répertoire personnel de Carlos :

O:4:"User":3{s:8:"username";s:6:"wiener";s:12:"access_token";s:32:"gzr8Wa2Yu1BCZ2Ar1azumINITvSeYfnI";s:23:"avatar_link";s:19:"/home/carlos/morale.txt";}

Il suffit alors remplacer le cookie de la requête envoyée lors de la suppression du compte par celui modifié, ce qui va supprimer le fichier morale.txt valider le lab.