File Upload Vulnerability
Apa itu File Upload Vulnerability ?
File Upload Vulnerability adalah masalah keamanan umum yang ditemukan di aplikasi web. Setiap kali server web menerima file tanpa memvalidasinya atau mempertahankan batasan apa pun, itu dianggap sebagai unggahan file yang tidak dibatasi.
Di banyak server web, Vulnerability bergantung sepenuhnya pada tujuannya, yang memungkinkan penyerang jarak jauh mengunggah file dengan konten berbahaya. Ini mungkin berakhir dengan eksekusi kode yang tidak dibatasi di server. Kerentanan unggahan file dapat dimanfaatkan dengan berbagai cara, termasuk penggunaan permintaan POST data bentuk multi bagian yang dibuat secara khusus dengan nama file atau jenis mime tertentu.
Konsekuensinya mencakup akuisisi sistem secara keseluruhan, sistem file atau database yang kelebihan beban, pengalihan serangan ke sistem backend, dan fitnah sederhana.
Jenis File Upload Vulnerability
1.Local File Upload Vulnerability
unggahan file lokal memungkinkan pengguna aplikasi mengunggah atau menjatuhkan file berbahaya langsung ke situs web.
Diberikan di bawah ini adalah contoh program yang memungkinkan penyerang untuk mengunggah file berbahaya ke aplikasi:
<?php $target_dir = “uploads/”; //specifies the directory where the file is going to be placed $target_file = $target_dir.basename($_FILES[“fileToUpload”][“name”]); //specifies the path of the file to be uploaded $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); //holds the file extension of the file
Diberikan di bawah ini adalah kode yang menunjukkan bahwa Vulnerability ini dapat dihindari dengan memverifikasi lisensi pengguna:
if (!current_user_can(‘upload_files’)) //verify current user has the permission to upload a file die(__(‘You do not have permission to upload files.’)); // Process file upload
Perlindungan ini dapat dilewati dengan beberapa ekstensi (misalnya: double ekstensi) yang dapat dijalankan di server tetapi tidak terdaftar. (Contoh file: “file.php5”, “file.shtml”, “wecome.html.fr”, “file.asa”, atau “file.cer”)
2. Remote File Upload Vulnerability
Saat aplikasi tidak mengizinkan penggunanya untuk mengunggah file secara langsung dan sebagai gantinya memberikan izin untuk memberikan URL, maka kerentanan unggahan file jarak jauh mungkin terjadi. File yang diupload pengguna kemudian disimpan ke disk di direktori yang dapat diakses publik.
Setelah itu penyerang dapat mengeksekusi file tersebut dan mendapatkan akses ke situs web. Setelah penyerang mendapatkan akses, mereka dapat membahayakan data yang dibatasi atau bahkan melakukan serangan penolakan layanan.
“ Vulnerability tim thumb” yang telah memengaruhi sejumlah besar plugin adalah kerentanan unggahan file jarak jauh. Dalam kasus ini, pustaka gambar mengizinkan pengembang untuk menentukan URL gambar dalam string kueri.
Jadi, TimThumb.php akan mendownload gambar itu dari web. Penyerang dapat memanipulasi URL gambar dan membuat file php yang dihosting di situs web mereka. Kemudian Tim thumb akan menyimpan file php tersebut di website korban yang bisa diakses publik. Ini membuka jalan bagi penyerang untuk mengakses file php dan mengeksekusi skrip berbahaya.
Dampak File Upload Vulnerability
Pengambilalihan seluruh sistem korban melalui serangan sisi server.
a. File disuntikkan melalui jalur berbahaya. Jadi, file penting yang ada dapat ditimpa karena file .htaccess dapat disematkan untuk menjalankan skrip tertentu.
b. Masukkan halaman phishing untuk mendiskreditkan aplikasi web.
c. Unggahan file dapat mengekspos informasi internal penting dalam pesan kesalahan seperti jalur internal server.
Cara Mencegah File Upload Vulnerability
Sebuah file upload kerentanan dapat dicegah dengan mengikuti bawah mitigasi teknik:
· Biarkanekstensi filehanya tertentu
· ukuranSet file maksimumdan panjang nama
· Memungkinkan pengguna hanya berwenang
· Pastikan diambil file dari web adalah diharapkan satu
· Jauhkan Anda situs web diperbarui
· Beri nama file secara acak atau gunakan hash alih-alih input pengguna
· Blokir unggahan dari bot dan skrip menggunakan captcha Jangan pernah menampilkan jalur file yang diunggah
Bagaimana Peretas Mengeksploitasi File Upload Vulnerability ?
Proses meretas situs web itu rumit dan teknis. Kami telah menyederhanakannya semampu kami dan meletakkan langkah-langkahnya dengan cara yang mudah dimengerti oleh siapa pun.
→ Peretas selalu mencari kerentanan yang dapat mereka gunakan untuk mengakses situs web.
→ Di situs WordPress, sering ditemukan kerentanan di plugin dan tema. Ketika pengembang plugin dan tema mempelajari tentang kerentanan tersebut, mereka dengan cepat merilis pembaruan.
→ Pembaruan berisi rincian perbaikan yaitu bagaimana peretas mengetahui bahwa plugin atau tema tertentu memiliki kerentanan yang dapat dieksploitasi.
Langkah Kerja File Upload Vulnerability
File Upload Vulnerability adalah masalah utama dengan aplikasi berbasis web. Di banyak server web, kerentanan ini sepenuhnya bergantung pada tujuan yang memungkinkan penyerang mengunggah file yang menyembunyikan kode berbahaya di dalamnya yang kemudian dapat dieksekusi di server. Penyerang mungkin dapat memasukkan halaman phishing ke situs web atau merusak situs web.
Penyerang dapat mengungkapkan informasi internal server web kepada orang lain dan beberapa kemungkinan data sensitif mungkin bersifat informal, oleh orang yang tidak berwenang.
Di DVWA halaman web memungkinkan pengguna untuk mengunggah gambar, dan halaman web melalui pengkodean program dan memeriksa apakah karakter terakhir dari file tersebut adalah ‘.jpg’ atau ‘.jpeg’ atau ‘.png’ sebelum mengizinkan gambar diunggah direktori.
· Low Level
untuk yang pertama mencoba cara hack fitur upload dengan DVWA (Damn Vulnerabl Web App) dan sekarang mari kita lihat gambar di bawah ini yang merupakan antarmuka dari upload aplikasi web.
di atas gunakan pengujian leveling rendah sangat mudah untuk mengunggah php di atasnya, saya hanya memilih file dan kemudian klik unggah, itu akan berhasil diunggah. gambar seperti di bawah ini.
setelah berhasil anda bisa mengakses direktori tempat anda mengupload file tersebut http://172.17.51.105/akatsuki/vulnerabilities/upload/../../hackable/uploads/shell.php
· Medium Level
Pada kesempatan kali ini akan mencoba mengupload file php sama dengan level rendah, seperti di atas tetapi tidak berhasil karena aplikasi web hanya untuk mengunggah file gambar/jpg. jangan khawatir dapat mencegat data POST menggunakan alat burpsuit.. Anda bisa mendapatkan lebih banyak bantuan tentang alat dengan pengaturan “bantuan burpsuit” Proxy di browser web Anda menggunakan pengaturan default pada port 8080. sebelum mengunggah, Anda harus melihat kode sumber unggahan
Dari bisa dilihat ini source if (($uploaded_type == “image/jpeg”) && ($uploaded_size < 100000)){
aplikasi hanya mengizinkan gambar atau jpg dan ukuran file untuk diunggah. jika seperti ini rename nama file Anda seperti ini “shell.php.jpg” ketika Anda mengklik upload tidak akan dikirim ke server secara langsung tetapi semua itu akan mencegat di burpsuit jika Anda langsung mencegatnya..file akan berhasil diunggah tetapi file hanya ekstensi gambar bukan php. Bisa dilihat gambar di bawah ini
sebelum dicegat, hapus ekstensi *.jpg pada nama file seperti ini before=”shell.php.jpg” after=”shell.jpg” lalu klik intersep.. maka file akan berhasil diupload.