pythonServer-Side Template Injection (SSTI)

Consignes

Le flag se trouve à 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.

circle-info

Le site http://ctftime.org/writeup/11840arrow-up-right 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