Injection de template côté serveur basique (Ruby)

Basic server-side template injection

L’application utilise des templates ERB de manière non sécurisée, ce qui la rend vulnérable à une Server-Side Template Injection (SSTI). L’objectif est d’exécuter du code arbitraire pour supprimer le fichier morale.txt situé dans le home de Carlos : /home/carlos/morale.txt.

1. Identification du paramètre vulnérable

On repère un paramètre message dans l’application qui reflète directement notre saisie dans la page. C’est ce champ qui sera utilisé pour injecter du code ERB.

2. Vérifier l’exécution de code (test avec 7*7)

On injecte une expression Ruby simple pour confirmer la SSTI :

Si la vulnérabilité est présente, la sortie affichera :

Cela prouve que l’expression Ruby est évaluée dans le template côté serveur.

3. Lire un fichier sensible : /etc/passwd

Une fois l’exécution confirmée, on tente de lire un fichier système pour valider l’accès au système de fichiers :

Le contenu de /etc/passwd est alors renvoyé dans la réponse, confirmant qu’on peut lire des fichiers sur le serveur.

4. Suppression du fichier morale.txt de Carlos

Pour finaliser le labo, on exécute une commande système afin de supprimer le fichier demandé :

Cette injection lance la commande rm côté serveur et supprime le fichier morale.txt dans le répertoire /home/carlos/.

Mis à jour

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