Désérialisation Java avec Apache Commons

Exploiting Java deserialization with Apache Commons

Ce laboratoire utilise un mécanisme de session basé sur la sérialisation Java et charge la bibliothèque Apache Commons Collections. Même sans accès au code source, il est possible d’exploiter la vulnérabilité en utilisant des chaînes de gadgets préconstruites.

Objectif : Injecter un objet Java sérialisé malveillant afin d’exécuter une commande à distance et supprimer le fichier :

Identifiants fournis :

  • wiener:peter

Analyse de la session

Après authentification, la session est stockée dans une cookie sérialisée Java, encodée en Base64, par exemple :

Le préfixe rO0AB confirme qu’il s’agit d’un objet Java sérialisé.

Outil utilisé : ysoserial

Pour générer un payload de désérialisation malveillant, on utilise l’outil tiers ysoserial.

Préparation de l’environnement

Le laboratoire nécessite une version compatible de Java (ici Java 11) :

Génération du payload malveillant

On commence par tester une chaîne de gadgets Apache Commons :

La commande s’exécute correctement côté local, mais le payload injecté dans l’application provoque une erreur.

Génération finale du payload et encodage en Base64 :

Adaptation de la chaîne de gadgets

Après plusieurs essais, la chaîne correcte pour ce laboratoire est :

Génération finale du payload et encodage en Base64 :

Mis à jour