SSTI dans un environnement sandbox

Server-side template injection in a sandboxed environment

Ce lab utilise le moteur de templates Freemarker avec un sandbox mal configuré, ce qui permet une injection de template côté serveur. Objectif : contourner le sandbox pour lire le fichier my_password.txt dans le dossier personnel de Carlos, puis soumettre son contenu.

Identifiants fournis : content-manager : C0nt3ntM4n4g3r

1. Vérifier l’exécution de code dans le template

On teste d’abord si le moteur interprète bien des expressions Java dans le template :

Le calcul est interprété, ce qui confirme la présence de SSTI avec exécution de code côté serveur.

2. Contourner le sandbox et lire le fichier sensible

Pour sortir du sandbox et accéder au système de fichiers, on utilise l’objet product déjà présent dans le contexte du template et on remonte jusqu’aux classes Java sous-jacentes afin de lire directement le fichier de Carlos :

Cette expression renvoie le contenu du fichier my_password.txt sous forme de valeurs décimales (codes bytes).

3. Conversion des valeurs décimales en texte

La sortie obtenue est une suite de nombres décimaux :

100 50 110 114 98 112 109 53 98 117 99 117 122 111 99 106 101 101 54 98

En convertissant ces valeurs en ASCII, on obtient le mot de passe suivant :

d2nrbpm5bucuzocjee6b

Mis à jour

Ce contenu vous a-t-il été utile ?