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.