Server-Side Template Injection (SSTI), bir web uygulamasında sunucu tarafında şablon (template) motorlarının yanlış kullanılması sonucu ortaya çıkan güvenlik açığıdır. Bu tür bir açık, kötü niyetli kullanıcıların, uygulamanın şablon motorunu kullanarak zararlı kod veya komutlar enjekte etmesine olanak tanır. SSTI, özellikle şablon motorlarının kullanıcı girdilerini uygun şekilde filtrelemediği durumlarda oluşur.
Nasıl Çalışır?
Web uygulamaları genellikle HTML içeriği dinamik olarak oluşturmak için şablon motorları kullanır. Bu motorlar, kullanıcıya özel içerik sağlamak amacıyla şablon dosyalarını (örneğin, .html
, .jsp
, .php
dosyaları) işleyip çıktılar üretir. Bu şablonlar, genellikle veri entegrasyonu yaparken kullanıcı verilerini (mesajlar, profil bilgiler vb.) şablon içine yerleştirir.
Eğer bir şablon motoru, kullanıcıdan gelen verileri doğru bir şekilde doğrulamaz veya filtrelemezse, bir saldırgan şablon diline özgü komutları, işlevleri veya ifadeleri (örneğin, Python'daki Jinja2, PHP'deki Twig, vb.) şablona enjekte edebilir. Bu, saldırganın sunucuda çeşitli işlemleri çalıştırabilmesine veya verileri manipüle etmesine yol açabilir.
Örnek
Bir web uygulaması, kullanıcıya şablon motoru aracılığıyla kişisel bilgilerini gösterebilir:
Eğer kullanıcı adı doğru bir şekilde doğrulanmazsa, saldırgan şu şekilde bir giriş yapabilir:
Bu, şablon motorunun yapılandırma öğelerini listelemesine veya başka bir zararlı işlem yapmasına yol açabilir.
Riskler
- Komut Enjeksiyonu: Saldırgan, şablon motorunun sunduğu işlevleri kullanarak komutları çalıştırabilir.
- Veri Sızdırma: Sunucunun iç yapılandırmaları, veritabanı sorguları veya hassas veriler saldırganlara sızabilir.
- Uzaktan Kod Çalıştırma (RCE): Bazı şablon motorları, kullanıcıdan gelen verileri işleyerek komut dosyası çalıştırabilir, bu da tam erişim sağlayan bir uzaktan kod çalıştırma saldırısına yol açabilir.
Önleme Yöntemleri
- Kullanıcı Girdisi Temizliği: Kullanıcıdan gelen tüm veriler doğru şekilde doğrulanmalı ve filtrelenmelidir.
- Şablon Motoru Güvenliği: Şablon motorlarının doğru yapılandırılması, gereksiz işlevlerin devre dışı bırakılması.
- Güvenli Kodlama Pratikleri: Veritabanı sorguları veya dış kaynaklara yapılan istekler için güvenli kodlama pratiklerine dikkat edilmelidir.
- Şablon Motoru Seçimi: Güvenlik açığına daha yatkın olan şablon motorlarından kaçınılmalıdır.
Lütfen yorum yaparken şunlara dikkat ediniz:
Küfürlü, siyasi veya huzur bozucu yorumlar yapmamaya,
Reklam, spam gibi yorumlar yapmamaya.