Siber Güvenlik Teknolojileri

SSTI ve CSTI Zafiyetleri

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!!!


  • AGPL Lisansı Ücretsiz Kullanım İçin midir?
    Açık kaynak dünyasında lisanslar, yazılımın nasıl kullanılabileceğini, dağıtılabileceğini ve modifiye edilebileceğini belirleyen kritik unsurlardır. Bu lisanslar arasında Affero Genel Kamu Lisansı (AGPL), özellikle bulut ve ağ tabanlı uygulamalar için önemli bir yere sahiptir. Peki, AGPL lisansı gerçekten ücretsiz kullanım için midir? Bu makalede, AGPL lisansının tarihçesi, amacı, kullanım alanları ve kimler için uygun olabileceği gibi konuları
  • Python Neden Bu Kadar Popüler?
    Son yıllarda programlama dünyasında Python, adeta bir fenomene dönüşerek büyük bir popülarite kazandı. Hem yeni başlayanlar hem de deneyimli geliştiriciler arasında tercih edilen bu dil, çeşitli nedenlerle öne çıkıyor. Peki, Python’un bu denli popüler olmasının ardında yatan sebepler nelerdir? Bu makalede, Python’un temel özelliklerinden, avantajlarından ve diğer programlama dillerinden farklarından bahsederek, Python’un neden bu kadar
  • Blender: 3D Yaratıcılığın Açık Kaynaklı Gücü
    Yaratıcılığın sınırlarını zorlayan grafik tasarımcılar, animatörler ve 3D modelleyiciler için Blender 3D, vazgeçilmez bir araç haline gelmiştir. Açık kaynaklı ve ücretsiz olması, onu hem profesyoneller hem de hobi olarak 3D tasarım yapanlar için ideal kılıyor. Peki, Blender’ı bu kadar özel kılan nedir? Bu makalede, Blender’ın tarihçesinden, sunduğu özelliklere, avantajlara ve topluluğuna kadar geniş bir yelpazede
  • Bir Web Geliştirme Dili Öğrenmek İstiyorsunuz ama Karar Veremiyor musunuz?
    Web geliştirme dünyası sürekli olarak evrilen ve genişleyen, inanılmaz karmaşık bir ekosisteme sahiptir. Bu alanda kullanılan web geliştirme dili olgusunun çeşitliliği de her biri farklı amaçlar ve ihtiyaçlar için tasarlanmış olması nedeniyle hangi dili öğrenmeniz gerektiğine karar vermek zor olabilir. Bu sebeple bizler de sizlere bu yazımızda web geliştirmede kullanılan dillerin kapsamlı bir listesini ana
  • Bir Programlama Dili Öğrenmek İstiyorsunuz ama Karar Veremiyor musunuz?
    Modaya uymak istiyorsunuz ve mesela bir oyun yazmak istiyorsunuz; çünkü günümüz dünyasında yazılım geliştirmeye karar vermek heyecan verici bir adım olabilir? Ancak bu yolculuğa başlamadan evvel hedeflerinizi net bir şekilde belirlemeniz büyük önem taşır. Hedeflerinize bağlı olarak seçeceğiniz programlama dili, geliştirme sürecinizin başarısını doğrudan etkileyebilir. Bu yüzden bizler de sizlere Makine Dilleri, Yüksek Seviyeli Diller ve Eski veya Az
  • Firefox Kullanmayarak Çok Şey Kaçırıyorsunuz!
    İ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 biri haline geldi. Piyasada sayısız tarayıcı seçeneği bulunmasına rağmen, Firefox öne çıkan alternatiflerden biri olarak dikkat çekiyor. Ancak, pek çok kullanıcı hala Firefox’un sunduğu benzersiz avantajlardan habersiz olabilir. Yani Firefox kullanmayarak
  • Duckduckgo: Müthiş Bir 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 ait bir algoritması var! İnternetin devasa bilgi denizinde kaybolmamak için en güvenilir yardımcılarımızdan biri olan arama motorları, kullanıcıların ihtiyaçlarına göre sürekli evriliyor. Bu evrimin en dikkat çekici temsilcilerinden biri de DuckDuckGo. Gizliliğe önem veren kullanıcılar arasında hızla
  • Yeni Distrowatch Favorisi: 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 tabanlı bu dağıtım, performans odaklı yapısı, geniş özelleştirme seçenekleri ve kullanıcı dostu yaklaşımıyla dikkat çekiyor. Gelin, bu yeni nesil işletim sistemini yakından tanıyalım! CachyOS’un Arkasındaki Ekip ve Felsefe CachyOS, tutkulu ve yetenekli bir ekip
  • Güvenilir ve Bedava Bir Yapay Zekâ Aracı: 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 önemli endişeleri de getirdi. Pek çok kullanıcı, kişisel verilerinin nasıl kullanıldığı, konuşmalarının AI modellerini eğitmek için kullanılıp kullanılmadığı konusunda haklı olarak kaygılanıyor. İşte tam bu noktada, gizliliğe öncelik veren yaklaşımıyla

Yorum Yapabilirsiniz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir