SSTI: iniezione nei template server-side
Un motore come Jinja2, Twig o Freemarker interpola {{ ... }}. Se concateni input nel template sorgente, l'utente controlla l'espressione.
render_template_string("Ciao " + name)
# name = {{7*7}} -> "Ciao 49" (conferma SSTI)Da lì si naviga l'oggetto Python/Java fino a raggiungere primitive di sistema:
{{ ''.__class__.__mro__[1].__subclasses__() }} # verso os.systemDifesa
Tratta l'input come dato, mai come sorgente del template: passa le variabili al contesto, non concatenarle al template. Usa sandbox del motore quando disponibili, ma non fidartene come unica difesa. Il payload {{7*7}} è il test canonico per rilevarlo.