Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Outils open source — Gratuits, portables, hors ligne
Caractéristiques communes
100 % hors ligne — aucune donnée transmise
Portables — un seul fichier exécutable
Gratuits — MIT ou GPL v3
Code source ouvert sur GitHub
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Academy Contact

SSTI (Server-Side Template Injection)

hacking

Définition

Le SSTI (Server-Side Template Injection) est une vulnérabilité référencée sous CWE-1336, survenant lorsqu'une entrée fournie par un utilisateur est intégrée sans validation ni échappement suffisant directement dans un template côté serveur, permettant à un attaquant d'injecter des expressions ou du code interprété nativement par le moteur de template lui-même, plutôt que d'être traité comme une simple donnée textuelle statique à afficher. Les moteurs de templates modernes comme Jinja2 (Python), Twig (PHP) ou Freemarker (Java) offrent, au-delà du simple remplacement de variables, des capacités d'exécution d'expressions et d'accès à des fonctions du langage sous-jacent, fonctionnalité légitime pour l'affichage conditionnel mais dangereuse lorsqu'une entrée utilisateur non fiable est traitée comme du code template. Une exploitation typique commence par une injection d'expression mathématique simple comme {{7*7}} : si la réponse affiche 49 plutôt que la chaîne littérale, le moteur interprète l'entrée comme du code exécutable, ouvrant la voie, selon le niveau de sandboxing, à l'accès à des objets système et l'exécution de commandes arbitraires (Remote Code Execution), impact bien plus critique qu'un simple XSS. La prévention repose sur la séparation stricte entre logique de template et données utilisateur, l'usage exclusif de placeholders de substitution simple, et le sandboxing rigoureux du moteur de template lorsque l'injection de logique dynamique reste fonctionnellement nécessaire.

Description

Le SSTI exploite l'évaluation dynamique des moteurs de templates côté serveur (Jinja2, Twig, Freemarker) pour exécuter du code arbitraire. Quand des données utilisateur sont rendues directement dans un template sans échappement, elles sont évaluées comme des expressions du moteur.

Exploitation

Un payload {{7*7}} affiché comme 49 confirme une SSTI Jinja2. Des payloads avancés accèdent aux classes Python pour exécuter des commandes OS, lire des fichiers ou établir des connexions réseau vers des serveurs de l'attaquant.

Défense

  • Passer les données utilisateur comme variables au rendu de template, jamais les concaténer dans le template
  • Activer les modes sandbox des moteurs de templates pour restreindre l'accès aux objets système
  • Tester systématiquement les points d'entrée avec des payloads SSTI dans le cadre des audits

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis