Simak Penjelasan Tentang Kerentanan pengunggahan file – Di bagian ini, Anda akan mempelajari bagaimana fungsi pengunggahan file sederhana dapat digunakan sebagai vektor yang kuat untuk sejumlah serangan dengan tingkat keparahan tinggi. Kami akan menunjukkan kepada Anda cara mem-bypass mekanisme pertahanan umum untuk mengunggah shell web, memungkinkan Anda untuk mengambil kendali penuh atas server web yang rentan.
Simak Penjelasan Tentang Kerentanan pengunggahan file
sourcefiles – Mengingat betapa umum fungsi pengunggahan file, mengetahui cara mengujinya dengan benar adalah pengetahuan penting.
Apa itu kerentanan pengunggahan file?
Kerentanan pengunggahan file adalah saat server web mengizinkan pengguna untuk mengunggah file ke sistem filenya tanpa cukup memvalidasi hal-hal seperti nama, jenis, konten, atau ukurannya. Gagal menerapkan pembatasan dengan benar dapat berarti bahwa bahkan fungsi pengunggahan gambar dasar dapat digunakan untuk mengunggah file arbitrer dan berpotensi berbahaya. Ini bahkan dapat mencakup file skrip sisi server yang mengaktifkan eksekusi kode jarak jauh.
Dalam beberapa kasus, tindakan mengunggah file itu sendiri cukup menyebabkan kerusakan. Serangan lain mungkin melibatkan permintaan HTTP tindak lanjut untuk file tersebut, biasanya untuk memicu eksekusinya oleh server.
Apa dampak kerentanan unggahan file?
Dampak kerentanan pengunggahan file umumnya bergantung pada dua faktor utama:
Aspek mana dari file yang gagal divalidasi situs web dengan benar, apakah itu ukuran, jenis, konten, dan sebagainya.
Pembatasan apa yang dikenakan pada file setelah berhasil diunggah. Dalam skenario kasus terburuk, jenis file tidak divalidasi dengan benar, dan konfigurasi server memungkinkan jenis file tertentu (seperti .phpdan .jsp) dieksekusi sebagai kode.
Dalam hal ini, penyerang berpotensi mengunggah file kode sisi server yang berfungsi sebagai web shell, yang secara efektif memberi mereka kendali penuh atas server. Jika nama file tidak divalidasi dengan benar, penyerang dapat menimpa file penting hanya dengan mengunggah file dengan nama yang sama. Jika server juga rentan terhadap penjelajahan direktori , ini bisa berarti penyerang bahkan dapat mengunggah file ke lokasi yang tidak terduga.
Gagal memastikan bahwa ukuran file berada dalam ambang batas yang diharapkan juga dapat mengaktifkan bentuk serangan denial-of-service (DoS), di mana penyerang mengisi ruang disk yang tersedia.
Bagaimana kerentanan unggahan file muncul?
Mengingat bahaya yang cukup jelas, sangat jarang situs web di alam liar tidak memiliki batasan apa pun tentang file mana yang boleh diunggah oleh pengguna. Lebih umum, pengembang menerapkan apa yang mereka yakini sebagai validasi kuat yang cacat bawaan atau dapat dengan mudah dilewati.
Misalnya, mereka mungkin mencoba memasukkan jenis file berbahaya ke dalam daftar hitam, tetapi gagal memperhitungkan perbedaan penguraian saat memeriksa ekstensi file. Seperti daftar hitam lainnya, juga mudah untuk secara tidak sengaja menghilangkan jenis file yang lebih tidak jelas yang mungkin masih berbahaya.
Dalam kasus lain, situs web mungkin mencoba memeriksa jenis file dengan memverifikasi properti yang dapat dengan mudah dimanipulasi oleh penyerang menggunakan alat seperti Burp Proxy atau Repeater. Pada akhirnya, bahkan langkah-langkah validasi yang kuat dapat diterapkan secara tidak konsisten di seluruh jaringan host dan direktori yang membentuk situs web, menghasilkan ketidaksesuaian yang dapat dieksploitasi.
Baca Juga : 10 tips unggah file HTML yang berguna untuk pengembang web
Nanti di topik ini, kami akan mengajari Anda cara mengeksploitasi beberapa kekurangan ini untuk mengunggah web shell untuk eksekusi kode jarak jauh. Kami bahkan telah membuat beberapa lab interaktif yang sengaja dibuat rentan agar Anda dapat mempraktekkan apa yang telah Anda pelajari terhadap beberapa target yang realistis.
Bagaimana server web menangani permintaan untuk file statis?
Sebelum kita melihat cara mengeksploitasi kerentanan pengunggahan file, penting bagi Anda untuk memiliki pemahaman dasar tentang cara server menangani permintaan untuk file statis. Secara historis, situs web hampir seluruhnya terdiri dari file statis yang akan disajikan kepada pengguna saat diminta. Hasilnya, jalur setiap permintaan dapat dipetakan 1:1 dengan hierarki direktori dan file di sistem file server.
Saat ini, situs web semakin dinamis dan jalur permintaan seringkali tidak memiliki hubungan langsung dengan sistem file sama sekali. Meskipun demikian, server web masih menangani permintaan untuk beberapa file statis, termasuk stylesheet, gambar, dan sebagainya.
Proses penanganan file statis ini sebagian besar masih sama. Pada titik tertentu, server mem-parsing jalur dalam permintaan untuk mengidentifikasi ekstensi file. Ini kemudian menggunakan ini untuk menentukan jenis file yang diminta, biasanya dengan membandingkannya dengan daftar pemetaan prakonfigurasi antara ekstensi dan tipe MIME. Apa yang terjadi selanjutnya tergantung pada jenis file dan konfigurasi server.
- Jika jenis file ini tidak dapat dieksekusi, seperti gambar atau halaman HTML statis, server mungkin hanya mengirimkan konten file ke klien dalam respons HTTP.
- Jika jenis file dapat dieksekusi, seperti file PHP, dan server dikonfigurasikan untuk mengeksekusi file jenis ini, server akan menetapkan variabel berdasarkan header dan parameter dalam permintaan HTTP sebelum menjalankan skrip. Output yang dihasilkan kemudian dapat dikirim ke klien dalam respons HTTP.
- Jika jenis file dapat dieksekusi, tetapi server tidak dikonfigurasi untuk mengeksekusi file jenis ini, umumnya akan merespons dengan kesalahan. Namun, dalam beberapa kasus, konten file mungkin masih disajikan ke klien sebagai teks biasa. Kesalahan konfigurasi seperti itu terkadang dapat dieksploitasi untuk membocorkan kode sumber dan informasi sensitif lainnya. Anda dapat melihat contohnya dalam materi pembelajaran keterbukaan informasi kami.
Sekarang setelah Anda terbiasa dengan konsep-konsep utama, mari kita lihat bagaimana Anda berpotensi mengeksploitasi jenis kerentanan ini.
Bagaimana mencegah kerentanan pengunggahan file
Mengizinkan pengguna mengunggah file adalah hal yang lumrah dan tidak harus berbahaya selama Anda melakukan tindakan pencegahan yang tepat. Secara umum, cara paling efektif untuk melindungi situs web Anda sendiri dari kerentanan ini adalah dengan menerapkan semua praktik berikut:
- Periksa ekstensi file terhadap daftar putih ekstensi yang diizinkan daripada daftar hitam yang dilarang. Jauh lebih mudah untuk menebak ekstensi mana yang mungkin ingin Anda izinkan daripada menebak ekstensi mana yang mungkin akan diunggah oleh penyerang.
- Pastikan nama file tidak mengandung substring apa pun yang dapat diartikan sebagai direktori atau urutan traversal ( ../).
- Ganti nama file yang diunggah untuk menghindari tabrakan yang dapat menyebabkan file yang ada ditimpa.
- Jangan unggah file ke sistem file permanen server sampai file tersebut telah divalidasi sepenuhnya.
- Sebisa mungkin, gunakan kerangka kerja yang sudah ada untuk memproses unggahan file daripada mencoba menulis mekanisme validasi Anda sendiri.