Server-Side Template Injection

Template engine'lerinin güvenlik açıkları ve RCE saldırı teknikleri

{{7*7}} → 49 (Template Injection Detected!)

Server-Side Template Injection'a Giriş

Server-Side Template Injection (SSTI), saldırganın native template syntax kullanarak kötü amaçlı payload'ı template'e enjekte edebildiği ve bu payload'ın sunucu tarafında çalıştırılabildiği bir güvenlik açığıdır.

Bu teknik ilk olarak PortSwigger Research tarafından belgelendi:
2015 yılında yayınlanan "Server-Side Template Injection: RCE for the Modern Web App" araştırma makalesinde detaylandırılan bu saldırı türü, modern web uygulamalarında kritik bir güvenlik riski oluşturur.

Template engine'leri, sabit template'leri değişken verilerle birleştirerek web sayfaları oluşturmak için tasarlanmıştır. SSTI saldırıları, kullanıcı girdisi veri olarak geçirilmek yerine doğrudan template'e concatenate edildiğinde ortaya çıkar.

Template Syntax Örnekleri:
{{variable}} - Twig, Jinja2
${variable} - Freemarker
<%=variable%> - ERB
{%raw%}{%endraw%} - Django
Neden Tehlikeli:
SSTI, adından da anlaşılacağı gibi server-side'da gerçekleşir ve bu nedenle client-side template injection'dan çok daha tehlikelidir. Saldırganlar template engine'i manipüle ederek sunucunun tam kontrolünü ele geçirebilir.
Tarihçe
Bu saldırı türü, template engine'lerinin yaygınlaşmasıyla birlikte keşfedildi. Özellikle Python'daki Jinja2, Java'daki Freemarker ve PHP'deki Twig gibi popüler template engine'leri hedef alınır.