Seperti yang disebutkan sebelumnya, penyaringan Client-Side cenderung sangat mudah untuk dilewati, karena penyaringan tersebut terjadi sepenuhnya pada mesin yang Anda kendalikan. Bila Anda memiliki akses ke kode tersebut, sangat mudah untuk mengubahnya.
Ada empat cara mudah untuk melewati filter unggahan berkas sisi klien rata-rata:
1 Turn off Javascript in your browser -- cara ini akan berfungsi asalkan situs tersebut tidak memerlukan Javascript untuk menyediakan fungsionalitas dasar. Jika menonaktifkan Javascript sepenuhnya akan mencegah situs tersebut berfungsi sama sekali, maka salah satu metode lain akan lebih baik; jika tidak, cara ini dapat menjadi cara yang efektif untuk sepenuhnya melewati filter Client-Side.
2 Intercept and modify the incoming page. Dengan menggunakan Burpsuite, kita dapat menyadap halaman web yang masuk dan menghapus filter Javascript sebelum halaman tersebut sempat berjalan.
3 Intercept and modify the file upload. Jika metode sebelumnya berfungsi sebelum halaman web dimuat, metode ini memungkinkan halaman web dimuat seperti biasa, tetapi mencegat unggahan berkas setelah berkas tersebut lolos (dan diterima oleh filter).
4 Send the file directly to the upload point. Mengapa menggunakan halaman web dengan filter, jika Anda dapat mengirim berkas langsung menggunakan alat seperti
Mari kita asumsikan bahwa, kita telah menemukan halaman unggahan di sebuah situs web:
Seperti biasa, kita akan melihat kode sumbernya. Di sini kita melihat fungsi Javascript dasar yang memeriksa tipe MIME dari file yang diunggah:
Dalam contoh ini kita dapat melihat bahwa filter menggunakan daftar putih untuk mengecualikan tipe MIME apa pun yang bukan
Langkah kita selanjutnya adalah mencoba mengunggah berkas -- seperti yang diharapkan, jika kita memilih JPEG, fungsi tersebut akan menerimanya. Jika tidak, unggahan akan ditolak.
Setelah menetapkan ini, mari kita mulai Burpsuite dan muat ulang halaman. Kita akan melihat permintaan kita sendiri ke situs tersebut, tetapi yang benar-benar ingin kita lihat adalah respons server , jadi klik kanan pada
Ketika kita mengklik tombol "
Setelah menghapus fungsi tersebut, kita klik lagi "
Perlu dicatat di sini bahwa Burpsuite tidak akan, secara default, mencegat berkas Javascript eksternal apa pun yang sedang dimuat halaman web. Jika Anda perlu mengedit skrip yang tidak ada di dalam halaman utama yang sedang dimuat, Anda harus membuka tab "
Kami telah melewati filter ini dengan mencegat dan menghapusnya sebelum laman dimuat, tetapi mari coba melakukannya dengan mengunggah berkas dengan ekstensi dan tipe MIME yang sah , lalu mencegat dan mengoreksi unggahan tersebut dengan Burpsuite.
Setelah memuat ulang halaman web untuk mengembalikan filter ke tempatnya, mari kita ambil reverse shell yang kita gunakan sebelumnya dan ganti namanya menjadi "
Sekali lagi kita akan mengaktifkan intersepsi Burpsuite kita, lalu klik "Unggah" dan tangkap permintaannya:
Perhatikan bahwa tipe MIME shell PHP
Sekarang, saat kita menavigasi untuk http://demo.uploadvulns.thm/uploads/shell.php menyiapkan netcat, kita menerima koneksi dari shell!