File Upload Zafiyeti, Önlemler, Bypass ve Saldırı İzleri

Amaç

DVWA Lab. ortamında File Upload zafiyetinin bir saldırgan tarafından nasıl istismar edileceği ve saldırı neticesinde erişim log kayıtlarında nasıl izler oluşacağını öğrenmek.

File Upload Nedir ?

Adından da anlaşılacağı üzere herhangi bir dosyanın sistem arayüzünde bulunan dosya yükleme form alanları sayesinde; sisteme yüklenmesi / transfer edilmesi işlemidir.

Bu zafiyet türünde biz oluşturmuş olduğumuz shell dosyasını siteye yükleyerek site üzerinde yetkisiz erişim gerçekleştirmeye yönelik bir takım işlemler yapacağız. En son olarak ise sitede hacked.php adlı bir dosya oluşturup içerisine “hacked cenk” yazacağız.

DVWA File Upload – {Low Level}

Yukarıda görmüş olduğunuz gibi resim yüklemek için bir buton koyulmuş. Biz burada kendi yapmış olduğumuz ufak bir shell dosyasını yükleyeceğiz. Sonrasına yüklemiş olduğumuz shell dosyası sayesinde sistem üzerinde komutlar çalıştırarak yönetici gibi işlemler yapacağız. Peki ama nasıl ?

Kaynak kodlara göz atıldığında yüklenen dosyanın herhangi bir denetim mekanizmasından geçirilmeden doğrudan …./uploads dizinine yüklendiği görülüyor.

Shell dosyamız en basit haliyle aşağıdaki gibi. Php kodlarını shell.php adlı oluşturduğumuz dosya içerisine kopyalıyoruz, kaydettikten sonra hedef siteye upload ediyoruz.

Dosya başarıyla yüklendikten sonra artık saldırı aşamasına geçebiliriz.

?cmd= parametresine değer olarak gireceğimiz komutlarla hedef sistemde yukarıda bahsettiğimiz gibi hacked.php adlı bir dosya oluşturalım ve içerisine “hacked cenk” yazalım. Önce dosyamızı upload ettikten sonra çalışıp çalışmadığını URL adresine giderek kontrol edelim. ls komutu kullanarak bulunduğumuz dizindeki dosyaları listeleyelim.

Sonrasında hangi dizinde olduğumuza bakalım ve cd komutu ile üst dizinlere geçerek hacked.php dosyası oluşturarak içerisine “hacked cenk” yazalım.

Burada shell üzerinde gerçekleştirdiğimiz tüm işlemlerde GET metodu kullanıldığı için bunlar access log dosyasına doğrudan yansıyacaktır. Sistem yöneticisi tarafından erişim log kayıtları kontrol edildiğinde kolayca tespit edilebilir.Sonuçta echo, ls, cd gibi terminal komutlarının sunucu üzerinde çalıştırıldığı aşikar olacaktır. Saldırgan burada yüklemiş olduğu shell dosyasında kullanıcıdan aldığı verileri POST metodu ile sunucuya gönderdiği takdirde erişim log kayıtlarında sadece bir verinin POST edildiği gözükecektir.

DVWA File Upload – {Medium Level}

Bu zafiyetin orta seviyesinde önce kaynak kodlarına baktığımızda; sunucuya yüklenen dosyanın resim olup olmadığı (image/jpg ya da image/png) kontrol edilmekte, eğer dosya jpg, png değil ise upload işlemi gerçekleştirilmemektedir.

Bu güvenlik seviyesini atlayabilmek için BurpSuite programının ücretsiz versiyonunu indirin ve tarayıcınızla senkronize edin.Ya da https://addons.mozilla.org/it/firefox/addon/tamper-data/ vb. gibi tarayıcı eklentilerinden de faydalanabilirsiniz. Sonrasında siteye bir resim yüklemeye çalışın ve gönderilen paketin header bilgilerini BurpSuite programı ile inceleyin. Aşağıda resimde görüldüğü üzere Content-Type image/png değeri aldı. Zaten upload kısmında jpg ve png dosyalarına izin verildiği için resim sunucuya başarılı bir şekilde yüklenecektir.

Şimdi ise düşük seviyedeki shell.php dosyamızı upload etmeye çalışalım. Aşağıda resimde görüldüğü üzere Content-Type application/x-php değeri aldı. Buradan anlaşıldığı üzere; dosya tipi Content-Type header değerine bakılarak anlaşılmakta ve php kodlarında izin verilen formatlarda sunucuya yüklenmektedir. Buradaki Content-Type değerini image/png olarak ya da image/jpg olarak değiştirirerek gönderirsek sunucu yüklenen dosyanın resim olduğunu zannederek shell.php dosyasını başarılı bir şekilde sisteme yükleyecektir.

Görüldüğü üzere shell dosyamız alınan güvenlik önlemi atlatılarak başarılı bir şekilde yüklenmiştir.

DVWA File Upload – {High Level}

Bu zafiyetin yüksek seviyesindeki kaynak kodlarına baktığımızda; öncelikle yüklenecek dosyanın ismi ele alınarak ilk noktadan sonraki tüm karakterler dosya uzantısını öğrenmek amacıyla $uploaded_ext değişkenine atanıyor.

Sonrasında ise dosya uzantısı jpg, jpeg, png değerlerinden biriyse başarılı bir şekilde yükleniyor. Diğer dosya uzantılarının yüklenmesi ihtimali engellenerek iyi bir güvenlik mekanizması uygulanıyor.

File Upload Saldırı Sonrasında Oluşan Erişim Log Kayıtları

  • Görüldüğü üzere öncelikle upload dizinie gidiliyor.
  • Orada form üzerinden bir POST isteği gerçekleşiyor.
  • Sonrasında shell.php isimli bir dosyaya gidilerek linux komutları çalıştırılıyor (istekler GET metoduyla gönderildiği için accesslog kayıtlarında komutları görebiliyoruz)
  • hacked.php adlı bir dosya oluşturuluyor ve içerisinde hacked cenk yazılıyor
  • Son olarak ise oluşturulan dosya  ziyaret ediliyor.

Senaryolar burada arttırılabilir. Yapmış olduğumuz örnekte önemli olan husus log kayıtlarında, farklı türde bir dosyanın tespit edilmesi, linux/windows sistem komutlarının aratılması, ayrıca shell dosyası tespit edilmesi durumunda o dosyaya erişim sağlayan IP adreslerinin hareketlerinin kontrol edilmesidir.

Faydalı ve Faydalanılan Kaynaklar

http://www.includekarabuk.com/dvwatutorial.php

Leave a reply:

Your email address will not be published.

Site Footer