Neler yeni
Bughane Academy

Bughane Academy, bug bounty, web güvenliği ve sızma testi alanında kendini geliştirmek isteyenler için kurulmuş Türkçe odaklı bir topluluktur.

Burada; gerçek güvenlik açıkları, recon ve exploit teknikleri, payload & bypass yöntemleri, araçlar, scriptler ve write-up’lar topluluk tarafından paylaşılır ve tartışılır.

Birlikte öğren, birlikte üret, birlikte güçlen.

SSTI ve CSTI Zafiyetleri Nelerdir?

EastWind

Moderator
Gözlemci
Katılım
3 Ocak 2026
Mesajlar
2
Tepkime puanı
4
Puan
3

Giriş​

Web uygulamalarının yaygınlaşmasıyla birlikte güvenlik ihtiyacı da artmıştır. Bu yazıda, web güvenliğinde sıkça karşılaşılan iki kritik zafiyeti inceleyeceğiz: SSTI (Server-Side Template Injection) ve CSTI (Client-Side Template Injection).

SSTI (Server-Side Template Injection)​

SSTI, kullanıcıdan alınan verilerin sunucu taraflı şablon motorlarına filtrelenmeden iletilmesi sonucu oluşur. Geliştirici, kullanıcı girdisini doğrudan şablon motoruna işlerse; saldırgan bu alana zararlı ifadeler enjekte ederek motorun yorumlama yeteneğini kötüye kullanabilir.

Bu zafiyet, sunucudaki hassas verilerin okunmasından sunucunun tamamen ele geçirilmesine (RCE) kadar varan ciddi sonuçlar doğurabilir.

Hangi Teknolojilerde Görülür?
SSTI, aşağıdaki sunucu taraflı şablon motorlarında yaygındır:

Python: Jinja2, Mako
PHP: Twig, Smarty
Java: Freemarker, Velocity
Ruby: Liquid

Bu motorlar genellikle {% %}, {{ }} gibi özel sözdizimleri (syntax) ile verileri işler.

Örnek Senaryo Bir web uygulamasında aşağıdaki gibi bir URL yapısı olduğunu varsayalım:http://localhost:5000/?name=Emirhan

Normal şartlarda sayfa "Merhaba Emirhan" çıktısı verir. Ancak saldırgan şablon motorunu tetikleyen bir matematiksel işlem gönderirse:http://localhost:5000/?name={{7*7}}

Şablon motoru bu ifadeyi işler ve sayfada şu yanıt döner:Merhaba 49!

Bu durum, sunucunun kodu derlediğini ve SSTI zafiyetinin varlığını kanıtlar.


CSTI (Client-Side Template Injection)​

CSTI, modern frontend framework'lerinde kullanıcı girdilerinin gerekli sanitizasyon (temizleme) yapılmadan işlenmesiyle ortaya çıkar. Bu zafiyet, tarayıcı tarafında zararlı JavaScript kodlarının çalıştırılmasına yol açabilir.

CSTI sıkça XSS (Cross-Site Scripting) ile karıştırılır; ancak temel fark, CSTI'nın doğrudan framework'ün şablon sözdizimini hedef almasıdır.

Hangi Teknolojilerde Görülür?
  • AngularJS
  • Vue.js
  • Mustache
  • Handlebars.js
Örnek Senaryo Bir AngularJS uygulamasında şu şekilde bir HTML şablonu olduğunu düşünelim:
<div>{{ username }}</div>

Eğer saldırgan, kullanıcı adı olarak bir "sandbox escape" payload'ı gönderirse:{ "username": "{{constructor.constructor('alert(1)')()}}" }

AngularJS bu ifadeyi yorumlar ve tarayıcıda alert(1) kodunu çalıştırır. Bu açık; oturum (cookie) çalma, DOM manipülasyonu veya keylogger yerleştirme gibi saldırılara zemin hazırlar.

Uygulamalı SSTI Zafiyeti Örneği (Flask + Jinja2)​


Uygulamamız;
1768034167360.jpg
İlk olarak tarayıcıya bu URL’yi girerek davranışı gözlemliyoruz:
http://localhost:5000/?name=Emirhan

Sonuç;


1768034606626.jpg

Ama aşağıdaki gibi bir payload gönderirsek;
http://localhost:5000/?name={{7*7}}

1768034618004.jpg

Bu, SSTI zafiyetinin aktif olduğunu gösterir.

Güvensiz CSTI Örneği
Şimdi, escape işlemi yapılmadan kullanıcıdan alınan girdinin şablon motoruna nasıl doğrudan verileceğini ve bunun sonucunda CSTI zafiyetinin nasıl exploit edileceğini gösterelim.

Kodumuz;


1768034642942.jpg
Urlmiz;
http://127.0.0.1:5000/?input=<script>alert('CSTI Zafiyeti!’);</script>

1768034655075.jpg

Bu, CSTI zafiyetinin nasıl exploit edilebileceğini gösteriyor. Kullanıcıdan alınan input doğrudan şablona yerleştirildiği için, zararlı JavaScript kodu çalıştırılabiliyor.

Bu yazıda, SSTI ve CSTI zafiyetlerinin ne olduğunu, nasıl exploit edilebileceğini ve bunlardan nasıl korunmamız gerektiğini detaylı bir şekilde inceledik. Bu tür güvenlik açıkları, web uygulamalarının güvenliğini tehdit eden önemli risklerdir ve her geliştiricinin dikkat etmesi gereken konulardır.

Umarım bu yazı, hem güvenlik açıklarını anlamanızı hem de pratikte nasıl çözebileceğiniz konusunda size yardımcı olmuştur. Unutmayın, güvenli yazılım geliştirme her zaman önceliğimiz olmalıdır!

Emirhan Sevmez.
 
Geri
Üst