Server-Side Template Injection SSTI
hackingDéfinition
Injection dans les moteurs de templates côté serveur permettant l'exécution de code arbitraire. Exploite l'évaluation dynamique de templates Jinja2, Twig ou Velocity avec des payloads comme {{7*7}}.
Description
Le Server-Side Template Injection injecte des expressions dans des moteurs de templates côté serveur (Jinja2, Twig, Velocity, Freemarker) dont l'évaluation dynamique permet d'exécuter du code arbitraire. Un test simple comme {{7*7}} retournant 49 confirme la vulnérabilité.
Exploitation
Sur Jinja2, le payload {{config.__class__.__init__.__globals__['os'].popen('id').read()}} permet d'exécuter des commandes système. Chaque moteur de templates a ses propres gadgets d'exploitation documentés dans des ressources comme HackTricks.
Défense
- Ne jamais concaténer directement des entrées utilisateur dans des templates, utiliser des variables passées au rendu
- Utiliser des sandboxes de template (SandboxedEnvironment dans Jinja2) pour restreindre l'accès aux objets
- Valider et encoder les données avant leur insertion dans tout contexte de rendu de template
Besoin d'un expert sur ce sujet ?
Audit, pentest, conformité ISO 27001, développement IA sécurisé — demandez un devis gratuit.
Demander un devis