Server-Side Template Injection (SSTI)
Consignes
Le flag se trouve aÌ la racine du site web !
Réalisation
Les failles server-side template injection (SSTI) restent moins recherchĂ©es que dâautres types de vulnĂ©rabilitĂ©s. Pourtant, leur impact est important et mĂšne souvent Ă de lâexĂ©cution de code Ă distance (RCE). Ce sont donc des failles Ă ne pas sous-estimer.
Une SSTI se produit quand des donnĂ©es utilisateur sont injectĂ©es directement dans un moteur de template serveur (ex : Jinja2, Twig, Smarty, etc.) sans ĂȘtre correctement Ă©chappĂ©es.
Nous avons la possibilitĂ© de renseigner notre nom sur la page du site web, qui sera ensuite retourne pour ĂȘtre affichĂ© dans le navigateur.
Le but est d'essayer de regarder si nous pouvons afficher une autre valeur que un nom d'utilisateur pour par la suite afficher le FLAG.
Pour se faire, on test d'exécuter ceci sur le site WEB :
{{7*7}}Le serveur retourne alors Hello, 49 ! . Il prend bien en compte le calcul fourni.
Le site http://ctftime.org/writeup/11840 est utile pour ce chall
On suit donc ce qui a été effectué dans le writeup du lien ci-dessus et on entre ceci dans le champs du site cible :
Le résultat obtenu représente une liste énorme de classes Python.
Ce quâon cherche ensuite, câest subprocess.Popen, souvent Ă un index spĂ©cifique dans la liste.
On recherche donc la classe python subprocess.Popen . Ceci peut ĂȘtre effectuĂ© par bruteforce via burp ou un script.
Dans notre cas, il s'agit de la classe numéro 370 parmi toutes celles proposées.
On lance donc maintenant une recherche du fichier flag.txt sur le site cible :
Le site retourne ceci :
Nous avons bien réussi à récupérer le FLAG :
Last updated