Web App Hacking Tips & Trick—Celah File Upload — Bagian 1

Sep 27, 2024

sysbraykr.com news -


1. Fungsi Upload File

Penjelasan: Fungsi upload file pada aplikasi web sering kali digunakan untuk memungkinkan pengguna mengunggah file, seperti gambar, dokumen, atau video, ke server. Namun, fungsi ini bisa menjadi celah keamanan jika tidak diimplementasikan dengan benar. Penyerang dapat mengunggah file berbahaya seperti skrip atau shell yang dapat dieksekusi pada server untuk mendapatkan akses tidak sah. Misalnya, jika pengguna diizinkan mengunggah file PHP tanpa pembatasan yang tepat, penyerang bisa menyisipkan kode berbahaya ke dalam file PHP dan mengakses server untuk menjalankan kode tersebut. Oleh karena itu, validasi tipe file, pembatasan ukuran, dan pemindaian malware harus dilakukan sebelum file disimpan di server.


2. Dampak dari Ekstensi File

Penjelasan: Ekstensi file menentukan bagaimana file tersebut diproses oleh server. Penyerang sering kali memanfaatkan ekstensi tertentu untuk menjalankan serangan, misalnya dengan menyisipkan skrip berbahaya dalam file yang diunggah

.ASP, ASPX, PHP5, PHP, PHP3: Ekstensi ini sering digunakan dalam aplikasi web berbasis Microsoft atau PHP. Jika fungsi upload file tidak membatasi ekstensi yang diizinkan, penyerang bisa mengunggah file dengan ekstensi ini yang berisi webshell, sebuah antarmuka yang memungkinkan penyerang menjalankan perintah pada server dari jarak jauh. Ini bisa mengarah ke Remote Code Execution (RCE), di mana penyerang mendapatkan kendali penuh atas server.

SVG (Scalable Vector Graphics): SVG adalah format gambar berbasis XML yang sering digunakan dalam desain web. Karena XML dapat digunakan untuk menyisipkan data eksternal, file SVG bisa dieksploitasi untuk melakukan serangan Stored XSS (Cross-Site Scripting), SSRF (Server-Side Request Forgery), dan XXE (XML External Entity). Dalam Stored XSS, penyerang bisa menyisipkan skrip berbahaya dalam file SVG yang diakses oleh pengguna lain, sementara SSRF memungkinkan penyerang membuat server mengeksekusi permintaan ke alamat IP atau domain yang tidak sah.

GIF (Graphics Interchange Format): File GIF yang terlihat tidak berbahaya dapat dieksploitasi dengan cara yang sama seperti SVG untuk melakukan Stored XSS atau SSRF. Misalnya, penyerang bisa menyisipkan kode XSS dalam metadata gambar GIF yang kemudian dijalankan ketika file tersebut dibuka di browser.

CSV (Comma-Separated Values): Format ini sering digunakan untuk mengimpor dan mengekspor data dalam bentuk tabel. Namun, CSV juga rentan terhadap serangan CSV Injection, di mana penyerang menyisipkan perintah atau formula berbahaya di dalam file CSV yang kemudian dieksekusi oleh program spreadsheet seperti Microsoft Excel. Misalnya, menyisipkan formula seperti =cmd|' /C calc'!A0 dapat menjalankan perintah berbahaya di sistem pengguna.

XML (Extensible Markup Language): File XML rentan terhadap serangan XXE (XML External Entity), di mana entitas eksternal dalam file XML dimanipulasi untuk mengakses file sensitif di server, atau bahkan untuk melakukan serangan DoS (Denial of Service).

AVI (Audio Video Interleave): AVI adalah format video yang bisa dieksploitasi untuk serangan LFI (Local File Inclusion) dan SSRF. Dalam LFI, penyerang bisa menggunakan file AVI untuk mengakses file lokal di server, sementara SSRF bisa digunakan untuk membuat server mengakses sumber daya eksternal.

HTML, JS (JavaScript): File dengan ekstensi HTML atau JS rentan terhadap HTML Injection, XSS, dan Open Redirect. Penyerang bisa menyisipkan kode berbahaya dalam file HTML yang diunggah dan membuatnya dieksekusi di browser pengguna lain, atau mengarahkan pengguna ke situs berbahaya melalui serangan Open Redirect.

PNG, JPEG: File gambar seperti PNG atau JPEG bisa digunakan untuk serangan Pixel Flood Attack, sebuah bentuk serangan DoS (Denial of Service) yang mengeksploitasi ukuran gambar dan karakteristik pemrosesan gambar untuk membanjiri server dengan data yang tidak dapat diproses secara efektif.

ZIP: File ZIP dapat digunakan untuk mengeksekusi kode dari jarak jauh melalui serangan LFI atau menyebabkan DoS. Jika file berisi skrip PHP yang terkompresi di dalamnya, penyerang bisa membuat server mengeksekusi skrip tersebut ketika file ZIP dibuka.

PDF, PPTX: File ini sering dianggap aman, tetapi bisa dieksploitasi untuk melakukan SSRF dan Blind XXE. Blind XXE adalah varian dari serangan XXE di mana respon dari server tidak terlihat langsung oleh penyerang, tetapi server masih menjalankan operasi yang tidak sah berdasarkan data yang dikirimkan oleh penyerang.


3. Bypass Daftar Hitam (Blacklisting Bypass)

Penjelasan: Banyak aplikasi web menggunakan daftar hitam untuk memblokir file dengan ekstensi tertentu yang dianggap berbahaya (misalnya, .php, .asp). Namun, penyerang dapat memanipulasi ekstensi file untuk melewati daftar hitam ini.

PHP: Penyerang dapat mem-bypass daftar hitam untuk file PHP dengan menggunakan ekstensi alternatif seperti .phtm, .phtml, .phps, .pht, .php2, .php3, .php4, .php5, .shtml, .phar, .pgif, atau .inc. Meskipun ekstensi ini mungkin tidak secara eksplisit diblokir, server bisa tetap mengeksekusi file sebagai PHP.

ASP: Untuk aplikasi berbasis ASP, penyerang bisa menggunakan ekstensi seperti .asp, .aspx, .cer, atau .asa. Ekstensi ini bisa diabaikan oleh daftar hitam, tetapi tetap memberikan akses berbahaya ke server.

JSP: Pada server yang menggunakan Java Server Pages (JSP), penyerang bisa memanfaatkan ekstensi seperti .jsp, .jspx, .jsw, .jsv, atau .jspf untuk menyembunyikan file berbahaya.

Coldfusion: Aplikasi berbasis ColdFusion dapat dieksploitasi menggunakan ekstensi file seperti .cfm, .cfml, .cfc, atau .dbm. Penyerang bisa mengunggah file ini untuk mengakses fitur berbahaya pada server.

Menggunakan Kapitalisasi Acak: Salah satu teknik bypass lainnya adalah dengan menggunakan kapitalisasi acak dalam nama file, misalnya .pHp, .pHP5, atau .PhAr. Beberapa filter mungkin tidak mempertimbangkan variasi kapitalisasi ini, sehingga memungkinkan file berbahaya lolos dari deteksi.


4. Bypass Daftar Putih (Whitelisting Bypass)

Penjelasan: Daftar putih adalah kebijakan keamanan yang hanya mengizinkan file dengan ekstensi tertentu untuk diunggah (misalnya hanya gambar seperti .jpg atau .png). Namun, penyerang bisa memanipulasi nama file untuk melewati daftar putih ini dengan teknik berikut:

file.jpg.php: Penyerang bisa menambahkan ekstensi .php setelah ekstensi yang diizinkan (misalnya .jpg) untuk menipu server agar mengira file tersebut adalah gambar, tetapi sebenarnya file tersebut adalah skrip PHP.

file.php.jpg: Penyerang bisa menyisipkan ekstensi .php di awal, diikuti oleh ekstensi gambar untuk mem-bypass filter yang hanya memeriksa bagian akhir nama file.

file.php.blah123jpg: Teknik ini melibatkan penambahan teks acak di antara ekstensi .php dan .jpg untuk menipu sistem yang tidak memvalidasi nama file secara menyeluruh.

file.php%00.jpg: Penyerang bisa menggunakan karakter %00 (null byte) untuk menghentikan pembacaan nama file oleh sistem, sehingga hanya memperhatikan bagian pertama dari nama file dan mengabaikan ekstensi yang diizinkan.

file.php\x00.jpg: Teknik ini mirip dengan %00, menggunakan karakter escape \x00 untuk menghentikan parsing nama file pada titik tertentu, membuat sistem membaca file sebagai skrip PHP.

file.php%20: Penyerang bisa menggunakan %20 (spasi URL encoded) untuk memanipulasi nama file sehingga sistem gagal mengenali ekstensi yang berbahaya.

file.php%0d%0a.jpg: Menggunakan karakter newline (%0d%0a) untuk memanipulasi cara file diproses oleh sistem, memungkinkan file berbahaya untuk diunggah.

file.php…..: Menambahkan beberapa titik pada nama file untuk mengelabui filter ekstensi.

file.php/ atau **file.php.**: Menambahkan karakter slash (/) atau backslash () pada akhir nama file bisa menipu beberapa sistem yang tidak memvalidasi dengan benar.

file.php#.png: Penggunaan tanda hash (#) bisa digunakan untuk memotong bagian dari nama file yang dibaca oleh server, memungkinkan file berbahaya lolos dari daftar putih.

file.: Menggunakan nama file tanpa ekstensi yang jelas (misalnya hanya “file.”) untuk mencoba mengecoh sistem validasi.

.html: Penyerang bisa mengunggah file HTML berbahaya dengan menyamar sebagai file aman.

Artikel berdasarkan https://github.com/HolyBugx/HolyTips/blob/main/Checklist/API%20Security.md

Web App Hacking Tips & Trick—Celah File Upload — Bagian 1

Latest Articles