Lab: Web shell upload via Content-Type restriction bypass (12) | Apprentice

Dinnuhoni Trahutomo
4 min readJun 15, 2024

--

File upload vulnerabilities

Executive Summary:
Memahami dan mengatasi kerentanan keamanan dalam mekanisme file upload pada aplikasi web, khususnya teknik bypass pembatasan tipe konten (Content-Type). Melalui panduan langkah demi langkah, pengguna diajarkan cara mengeksploitasi kerentanan ini dengan mengunggah web shell menggunakan alat seperti BurpSuiteTujuan:

Key Findings

Full Pen Test Results:
Tekan “ACCESS THE LAB”, kemudian akan terpindah ke tab yang baru.

Saat menekan “ACCESS THE LAB”, kita akan diarahkan ke halaman beranda yang telah disediakan oleh PortSwigger. Lihat ke bagian kanan atas, tekan “My account”.

Masukkan username dan password yang telah diberikan yaitu:
Username: wiener
Password: peter
Lalu tekan “Log in”.

Kemudian, pilih file yang ingin di upload.

Untuk hal ini, saya telah memilih logo INFORSA.

Maka tampilan seperti berikut jika telah upload file.

File telah berhasil di upload dan avatar telah berganti menjadi gambar yang telah di upload sebelumnya.

Selanjutnya, upload file “exploit.php” yang telah dibuat sebelumnya. File “exploit.php” berisikan kode seperti berikut.

<?php echo file_get_contents('/home/carlos/secret'); ?>

Kemudian, tekan Upload.

File “exploit.php” tidak bisa di upload dikarenakan bukan dalam bentuk image/jpeg atau image/png.

Buka BurpSuite, ke bagian Proxy, lalu di HTTP history, cari Method POST dan URL mengarah ke avatar pada halaman My Account. Tekan, kemudian ke bagian Request, klik kanan dan pilih “Send to Repeater”.

Di Repeater, ke bagian Request. Ubah seperti dibawah gambar berikut. Jika sudah mengganti, tekan Send.

25 | Content-Type: application/x-php
|
|
|
v
25 | Content-Type: image/png

Dapat dilihat bahwa pada Response terdapat kode “200 OK”, menandakan bahwa berhasil.

Pada bagian Response, klik kanan dan pilih “Show response in browser”. Copy URL kemudian buka di Tab baru.

Hasilnya akan tampil seperti gambar berikut. Tekan “Back to My Account”.

Tekan gambar kecil diatas tulisan “Avatar”, lalu klik kanan dan pilih “Open image in new tab”.

Jawaban akan muncul di tab baru seperti gambar berikut.

HMUT1pHdyyRGx871C6WNOQYu4WBw3Dqs

Kembali ke beranda awal dan masukkan jawaban ke “Submit solution”.

Lab berhasil diselesaikan.

Kesimpulan:
Meskipun pembatasan tipe konten bisa diakali oleh penyerang, validasi di sisi server yang kuat, termasuk pemeriksaan konten file dan penggunaan mekanisme keamanan tambahan, sangat penting untuk mencegah eksploitasi serupa. Kesadaran akan risiko dan penerapan praktik keamanan yang tepat oleh pengembang dan administrator adalah kunci dalam melindungi aplikasi web dari serangan berbasis file upload.

Oleh: Dinnuhoni Trahutomo
(2209116006)

Terima Kasih!

--

--