Web Security Academy

Server-side template injection - Lab : Basic server-side template injection

Objectif :

  • Supprimer le fichier morale.txt se situant dans le répertoire home de l'utilisateur Carlos. Le serveur utilise les templates ERB (Embedded RuBy).

Solution :

On lance le lab et on arrive sur un site de commerce avec des articles en vente affichés :

En essayant d'accéder au détail du premier produit, le serveur nous informe que celui-ci n'est plus disponible en affichant un message :

C'est une requête GET ayant comme paramètre le message d'erreur qui est envoyée au serveur lorsqu'on clique sur le produit :

On va tenter une exécution de code à distance grâce à une injection de template.

En cherchant sur le net, on trouve que l'on peut utiliser la syntaxe suivante pour la template ERB:

On insère dans le paramètre GET le payload suivant : <% system("rm /home/carlos/morale.txt") %>.

On soumet la requête au serveur et le lab se valide ! On a effectivement réussi à supprimer le fichier morale.txt situé dans le répertoire home de Carlos.