SSI Injection Zafiyeti ve Çözüm Önerileri
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 handikabın çö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 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 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.
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.
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:
Görsel-3
Görsel-4
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.