SSI Injection zafiyetinin ne olduğuna geçmeden önce Server Side Include (SSI) teriminin tanımını bilmek gerekmektedir…

 

SSI Nedir?

Bilindiği üzere web siteleri birden fazla sayfanın bir araya gelmesi ile oluşmaktadır ve sayfalar dinamik olarak menüler aracılığı ile veya diğer alanlardan değiştirebilir durumdadır. Ancak bunu manuel olarak yapmak hem yorucu hem de zaman kaybı bir işlemdir. İşte bu zorluğun çözümlenmesinde SSI (Server Side Include) Türkçesiyle “Sunucu Taraflı Ekleme” yardımımıza koşar. SSI gerekli içerikleri dinamik olarak tüm sayfalarda ekleyebilmemizi sağlar.

ssi nedir

SSI geliştiricilere  web içeriklerini dinamik olarak  “#” gibi bazı özel direktiflerle oluşturabilmelerini sağlayan bir özelliktir. Sunucu html sayfalarında sırayla bu özel direktifleri arar ve çalıştırır. Bu direktifler shell komutları veya dosyalar olabilir. Tüm direktifler çalıştırıldıktan sonra html içeriği isteği yapan kişiye gösterilir.

Örnek SSI direktifleri:

<!--#echo var=”DOCUMENT_URI” -->
<!--#echo var=”DATE_LOCAL”-->
<!--#echo var="REMOTE_ADDR" -->

 

SSI Injection Zafiyeti Nedir?

ssi injection nedir

SSI Injection zaafiyeti ise SSI direktiflerine sahip web uygulamalarının saldırgan tarafından istismar edilmesidir. Bu tür uygulamalar sıklıkla son kullanıcıdan veri girişi kabul ederler ve bunu sunucuda işlerler. Bu tür bir işlevsellik saldırgan tarafından kötü amaçlı SSI direktiflerinin sayfaya gönderilmesiyle manipüle edilir ve sonuç olarak saldırgan sunucuya herhangi bir dosya ekleyebilir, değiştirebilir, silebilir; shell komutları çalıştırabilir veya hassas dosya içeriklerine ulaşabilir.

 

Laboratuvar ortamında SSI Injection zaafiyeti olan bir web uygulamasına SSI direktifleri göndererek zaafiyetin sonuçlarını incelemek mümkündür.

server side injection

Görsel 1

Görsel-1’den anlaşılacağı üzere bir web uygulamasında sunucuyla etkileşime geçilebilecek input alanında  <!–#echo var=”DOCUMENT_URI”–>  SSI direktifi verilmiştir.

server side injection

Görsel 2

Görsel-2’de sunucudan gelen cevaba bakıldığında ise  URL’den gelen kaynağın tam yolunun (DOCUMENT_URI) başarılı bir şekilde alındığı görülebilir.

Bir diğer örnekte ise hassas verilere de erişmek SSI zaafiyeti ile mümkün olmaktadır:

ssi

 

ssi

 

SSI Injection’dan Nasıl Korunulur?

Web tarayıcılardan sunucuya gönderilen sorgular mutlaka bir doğrulamadan geçirilerek içerisinde SSI direktifleri bulunan sorgular engellenmelidir. Yine html encode metotları kullanılarak kullanıcı sorguları sunucuda işlenmeden önce kontrolden geçirilip sorgu içerisindeki zararlı kodlar pasifize edilmelidir. Sunucu tarafından SSI direktiflerine sadece gerekli görüldüğü yerlerde kullanılmak üzere kısıtlama getirilerek de güvenlik seviyesi artırılabilir.