Fitur upload file pada aplikasi web sering kali menjadi target utama para peretas. Jika sistem keamanan server tidak menyaring file yang masuk dengan benar, peretas dapat mengunggah file script berbahaya. Dampak paling fatal dari celah ini adalah Remote Code Execution atau yang biasa disebut dengan RCE. RCE membuat peretas bisa menjalankan perintah apa saja langsung di dalam server target.
Celah ini dinamakan Arbitrary File Upload. Celah terjadi ketika website membiarkan pengguna mengunggah jenis file apa saja tanpa ada batasan yang ketat. Sebagai contoh, jika form upload foto profil menerima file berformat PHP atau ASP, peretas dapat mengunggah script backdoor. Setelah file berhasil terunggah, peretas hanya perlu mengakses link file tersebut untuk mulai mengendalikan server.
Banyak pengembang website mencoba mengamankan fitur ini dengan cara yang kurang tepat. Peretas biasanya mempunyai trik untuk melewati pengamanan tersebut. Berikut adalah beberapa teknik bypass yang sering ditemukan di dunia nyata.
- Mengubah Ekstensi File
Ketika server memblokir file berekstensi
.php, peretas akan mencoba alternatif lain yang masih bisa dieksekusi oleh server. Contohnya adalah ekstensi.php5,.phtml, atau.phar. - Memanipulasi Content Type
Server terkadang hanya memeriksa header tipe file saat diunggah. Peretas dapat mengubah header ini menjadi tipe gambar yang aman seperti
image/jpegpadahal isi file sebenarnya adalah script php jahat. - Menggunakan Double Extension
Peretas sering menggunakan nama file seperti
gambar.jpg.phpuntuk mengelabui filter yang hanya membaca kata di tengah nama file.
Untuk mencegah celah berbahaya ini, sistem keamanan harus diterapkan pada beberapa lapisan. Cara terbaik adalah memproses ulang setiap file yang diunggah. Server harus mengubah nama file asli menjadi string acak dan menyimpan file tersebut di luar folder utama website. Selain itu, pastikan folder tempat menyimpan file unggahan tidak memiliki izin untuk mengeksekusi script.