SSTI(Server-Side Template Injection) ve CSTI(Client-Side Template Injection) zafiyetleri

SSTI VE CSTI ZAFİYETLERİ

Günümüzde frameworkler üzerinde sıklıkla karşılaşılan birçok zafiyet var. Bunlardan bahsedildiğinde ilk aklımıza gelen SQLi ve XSS olsa da, modern frameworklerde sıklıkla karşılaşılan SSTI(Server-Side Template Injection) ve CSTI(Client-Side Template Injection) zafiyetlerinden bahsedeceğim. Ayrıca bu SSTI ve CSTI zafiyetleri hem kendi içlerinde açıklayıp hem de pratikte karşılaşabileceğimiz bazı örneklerine değinmek istiyorum.

Template Engine ve Template Injection Nedir?

Template Motoru, bir websitesinin yazılımını renderlayan motordur. İlerleyen zamanla websitelerinin karmaşıklaşması nedeniyle özellikler büyük ölçekli ve dinamik internet siteleri bu template motorları tarafından belirli bir şablona oturtularak kullanıcıların karşısına sunuluyor.

Template Injection ise bu template motorlarının zayıflıklarından faydalanmak, yani hazır şablonlar üzerindeki açıklar üzerinde kendi komutlarını çalıştırmaktır.

SSTI (Server-Side Template Injection) Nedir?

SSTI ve CSTI zafiyetleri hakkındaki ilk konumuz Server-Side Template Injection. Adında geçtiği gibi server tarafındaki template motorlarının kötüye kullanılmasıyla oluşan bir zafiyettir. Özellikle Jinja2, Django Template Engine gibi sistemlerde sıklıkla karşılaşılır.

Bu durumlarda kullanıcıdan gelen veride belirli templatelere rastlanır ve bu templateler sayesinde gelen istek, sunucunun kendi sistemi içerisindeki güvenlik kısıtlamalarını aşıp, istenmeyen verilerin sızdırılmasına ve sistem üzerinde zararlı işlemler gerçekleştirilmesine neden olabilir.

CSTI (Client-Side Template Injection) Nedir?

CSTI ise SSTI’ye benzer, ancak bu kez istemci tarafındaki template motorlarının kötüye kullanılmasından kaynaklanır. AngularJS, Handlebars, Vue gibi JavaScript tabanlı frameworklerde görülür.

Saldırgan, template motorunun çalıştığı yerde kendi kodlarını enjekte edebilir. Bu durum, özellikle XSS (Cross-Site Scripting) gibi ikinci aşama saldırıların da önünü açabilir.

SSTI Örneği (Flask/Jinja2):

Aşağıdaki örnek, Flask frameworkü ile Jinja2 template motoru kullanılarak yazılmış bir kod parçasıdır. Uygulama bir comment parametresi alıp bunu doğrudan şablona yerleştiriyor:

template = “Your comment is: {{ comment }}”
rendered = template.render(comment=comment_input)

Bu kod yalnızca XSS’e karşı değil, aynı zamanda SSTI’ya karşı da savunmasızdır. Örneğin, kullanıcı {{7*7}} gibi bir input gönderdiğinde, şablon motoru bu ifadeyi çalıştırıp sonucu döndürür:

$ curl -g 'http://www.target.com/page?name= {{7*7}}'

Yanıt olarak:

Your comment is: 49

şeklinde bir çıktı alırız. Bu da şablon motorunun gelen girdiyi çalıştırdığını ve potansiyel risk oluşturduğunu gösterir. Fakat bunun yerine kullanıcı daha tehlikeli bir kod çalıştırmaya kalkabilir örneğin, aşağıdaki kod /etc/passwd dosyasının içeriğine erşiyor:

{{ user.__class__.__mro__[1].__subclasses__()[407]("cat /etc/passwd", shell=True, stdout=-1).communicate() }}

Bu örnekte özetle:

  • user.__class__ ile kullanıcının sınıfına erişiyoruz.
  • __mro__ (Method Resolution Order) üzerinden object sınıfına ulaşıyoruz.
  • __subclasses__() fonksiyonuyla Python’da mevcut tüm alt sınıfları listeliyoruz.
  • Belirli bir subclass üzerinden bir komut çalıştırıyoruz (cat /etc/passwd).
  • Bu yöntemle, doğrudan sistem üzerinde terminal komutları çalıştırılabilir. Bu da basit bir XSS değil, doğrudan Remote Code Execution (RCE) anlamına gelir.

CSTI Örneği (Angular JS)

İstemci tarafındaki bir örneği ele alalım:

<h1>Hello, {{name}} </h1>

Eğer kullanıcı girişi {{7*7}} olursa, sayfa üzerinde şu şekilde bir çıktı oluşur:

Hello, 49

Ancak daha tehlikeli bir payload kullanılırsa, örneğin:

{{constructor.constructor(‘alert(1)’)()}}

bu durumda bir alert(1) pop-up’ı tetiklenir. Bu, sadece çıktıyı manipüle etmekle kalmayıp, doğrudan tarayıcı üzerinde kod çalıştırabileceğimiz anlamına gelir ve bu ciddi bir güvenlik açığıdır…


Makale: Enes Özşahiner


Kaynakçalar:

  1. HackTricks, “Client-Side Template Injection (CSTI)”.

URL: https://book.hacktricks.wiki/en/pentesting-web/client-side-template-injection-csti.html

Erişim tarihi: 28/04/2025

  • Sergey Novoselov, “SSTI & CSTI: Don’t Waste Your Time”, Medium.

URL: https://medium.com/@s_novoselov/ssti-csti-dont-waste-your-time-c6e9fbb20743

Erişim tarihi: 28/04/2025

  • OWASP Foundation, “Testing for Server-Side Template Injection”, Web Security Testing Guide v4.1.

URL: https://owasp.org/www-project-web-security-testing-guide/v41/4-Web_Application_Security_Testing/07-Input_Validation_Testing/18-Testing_for_Server_Side_Template_Injection

Erişim tarihi: 26/04/2025

Lütfen Dikkat! Sitemizi kaynak göstermeden kesinlikle alıntı yapmayınız!!!

  • SİZ HÂLÂ LINUX’A GEÇMEYENGİLLERDEN MİSİNİZ?
    Teknoloji dünyasında fısıltıyla başlayıp giderek bir çığ gibi büyüyen bir isim var: Linux. Belki adını duydunuz, belki “o çok karışık bir şey, sadece bilgisayar kurtları anlar” diye…
  • GÜVENİLİR ve BEDAVA BİR YAPAY ZEKÂ ARACI: duck.ai
    Günümüzde yapay zekâ (AI ya da Türkçesi YZ), teknolojinin ve günlük hayatımızın ayrılmaz bir parçası haline geldi. Ancak bu hızlı gelişim, beraberinde gizlilik ve veri güvenliği gibi…
  • SSTI VE CSTI ZAFİYETLERİ
    Günümüzde frameworkler üzerinde sıklıkla karşılaşılan birçok zafiyet var. Bunlardan bahsedildiğinde ilk aklımıza gelen SQLi ve XSS olsa da, modern frameworklerde sıklıkla karşılaşılan SSTI(Server-Side Template Injection) ve CSTI(Client-Side…
  • YENİ DISTROWATCH FAVORİSİ: CachyOS!
    Linux dünyasının dinamik ve yenilikçi dağıtımlarından biri olan CachyOS, son dönemde Distrowatch’ın gözdesi haline geldi. Yani 2025 ilk çeyreği itibari ile yeni DistroWatch favorisi: CachyOS! Arch Linux…
  • DuckDuckGo: MÜTHİŞ BİR ARAMA MOTORU
    İsim itici gelmesin… DuckDuckGo Google’nin en iyi gerçek alternatifi ve Neden Kullanmıyorsunuz? Üstelik birçoğu gibi ayrı bir arama motoru gibi davranıp aslında Google üzerinden arama yapmıyor, kendine…
  • FİREFOX KULLANMAYARAK ÇOK ŞEY KAÇIRIYORSUNUZ!
    İnternet çağında yaşıyoruz ve dijital dünyada geçirilen zaman her geçen gün artıyor. Bu süreçte, internet tarayıcısı seçimi, kullanıcı deneyimini ve çevrimiçi güvenliği doğrudan etkileyen en önemli kararlardan…
  • ÜNLÜ DARALMASI VE TÜRKÇE FİİL ÇEKİMİNDEKİ YANSIMALARI
    Türkçe’nin kendine has ses yapısı, fiil çekimlerinde ve ek alımlarında belirgin değişimlere yol açar. Ünlü daralması, özellikle fiillerin şimdiki zaman çekiminde ve ek alım süreçlerinde duyulan, söylenişin…
  • SİMGELER, ÖZEL KARAKTERLER VE İŞARETLER
    Simgeler Konusunda Türkçe Yazım Kuralları Türkçe yazımda simgeler, özel karakterler ve işaretlerin doğru kullanımı, özellikle bilimsel, teknik ve akademik metinlerde; günümüz eğitim ve bilim dünyasında, doğru yazım…
  • TÜRKÇE DİLBİLGİSİ TERİMLERİ VE YAZIM KURALLARI
    Türkçe dilbilgisi, doğru ve etkili iletişim kurabilmek için temel bir unsurdur. Hem yazılı hem de sözlü ifadelerde dilin kurallarını bilmek, anlamı doğru aktarmak ve anlaşılır bir şekilde…
  • ÜNLÜLERİN NİTELİKLERİ VE YAZIM KURALLARI
    Türkçe, zengin fonetik yapısı; ünsüz ve ünlülerin nitelikleri ile birlikte ses özellikleriyle dünya dilleri arasında önemli bir yere sahiptir. Dilimizin temelini oluşturan sesler, ünlüler ve ünsüzler olmak…
  • ÜNSÜZLERİN NİTELİKLERİ VE YAZIM KURALLARI
    Türkçenin ses yapısı, dilin akıcılığı ve ünsüzlerin nitelikleri ile anlam taşıyan ögelerin doğru biçimde aktarılabilmesi açısından büyük öneme sahiptir. Bu yapı, ünlü ve ünsüzlerin karşılıklı etkileşimi üzerine…
  • SORU EKLERİNİN YAZILIŞLARI VE YAZIM KURALLARI
    Soru eklerinin yazılışları, Türkçe’nin doğru ve etkili kullanımı açısından büyük önem taşır. Bu eklerin ayrı yazılması, ünlü uyumlarına dikkat edilmesi ve eklerden sonra gelen eklerin bitişik yazılması…