BOREDHACKERBLOG: CLOUD AV Write Up
Cloud Anti-Virus Scanner! is a cloud-based antivirus scanning service. Currently, it’s in beta mode. You’ve been asked to test the setup and find vulnerabilities and escalate privs
Reconnaissance
Reconnaissance, atau pengumpulan informasi, adalah langkah penting dalam aktivitas penetration testing atau ethical hacking. Tujuan dari fase ini adalah untuk mengumpulkan sebanyak mungkin informasi tentang sistem atau jaringan target, untuk mengidentifikasi kerentanan potensial dan vektor serangan. Dalam artikel ini, kita akan menjelaskan bagaimana menggunakan dua alat yang kuat, Netdiscovery dan Nmap, untuk reconnaissance.
Untuk memulai proses reconnaissance kita, pertama-tama kita akan menggunakan Netdiscovery untuk memindai jaringan dan mengidentifikasi host. Kita akan berasumsi bahwa kita memiliki akses ke jaringan lokal dan ingin mengidentifikasi semua host di jaringan. Kita dapat menggunakan perintah berikut untuk memindai jaringan:
Perintah ini akan memindai jaringan dengan rentang IP 192.168.100.1/24 dan menampilkan hasilnya dalam format daftar. Output akan mencakup alamat IP, alamat MAC, dan vendor dari setiap perangkat yang teridentifikasi.
Selanjutnya, kita akan menggunakan Nmap untuk memindai setiap host yang teridentifikasi dan mengidentifikasi port terbuka dan layanan. Kita akan berasumsi bahwa kita ingin mengidentifikasi port terbuka pada semua host di jaringan.
Setelah kita menginstal Nmap, kita dapat menggunakan perintah berikut untuk memindai jaringan:
Perintah nmap -sC -sV 192.168.100.126
digunakan untuk melakukan pemindaian jaringan pada host dengan alamat IP 192.168.100.126.
Argumen -sC
pada perintah tersebut mengaktifkan opsi penggunaan default dari Nmap NSE (Nmap Scripting Engine), yang menyediakan banyak skrip otomatis untuk mendeteksi kerentanan pada sistem target. Skrip-skrip tersebut akan dieksekusi oleh Nmap untuk mencari informasi tambahan pada target yang dapat digunakan untuk melakukan penilaian kerentanan.
Sementara itu, argumen -sV
menginstruksikan Nmap untuk melakukan deteksi versi perangkat lunak pada semua port yang terbuka pada target. Hal ini dilakukan untuk mendapatkan informasi lebih lanjut tentang layanan yang sedang berjalan pada host dan versi perangkat lunak yang digunakan oleh layanan tersebut.
Dengan menggunakan perintah ini pada host yang spesifik, kita dapat memfokuskan upaya reconnaissance kita pada satu target dan mendapatkan informasi detail tentang versi perangkat lunak dan layanan yang sedang berjalan pada host tersebut. Informasi ini dapat digunakan untuk melakukan penilaian kerentanan dan menentukan strategi serangan yang tepat.
Selanjutnya, kita perlu memulai enumerasi terhadap mesin host, oleh karena itu kita membuka browser web untuk menjelajahi layanan HTTP Python. dan Di sini kami memiliki deskripsi Cloud Anti-Virus Scanner
Source code dibawah merupakan kode HTML yang digunakan untuk membuat sebuah halaman web sederhana yang menyediakan layanan beta Cloud Anti-Virus Scanner. Namun, terdapat beberapa kerentanan yang perlu diperhatikan dalam kode tersebut.
Pertama, form action pada tag <form>
mengarah ke /login
, yang menunjukkan bahwa data yang dimasukkan oleh pengguna akan diproses pada halaman login. Namun, tidak ada mekanisme validasi untuk memastikan bahwa data yang dimasukkan benar-benar merupakan invite code yang valid. Hal ini dapat memungkinkan serangan brute-force atau penyerangan password dengan menggunakan daftar kode yang umum digunakan atau dicoba secara acak.
Kedua, kode tersebut tidak menggunakan protokol HTTPS yang dapat menyediakan keamanan tambahan dengan mengenkripsi komunikasi antara pengguna dan server. Hal ini dapat memungkinkan serangan Man-In-The-Middle (MITM) yang dapat memungkinkan peretas untuk mencuri informasi pengguna, seperti invite code atau informasi login lainnya.
Ketiga, tidak ada mekanisme yang diberikan pada kode untuk melindungi layanan dari serangan injeksi XSS (Cross-Site Scripting) maupun SQL Injection. Hal ini dapat memungkinkan peretas untuk menyisipkan skrip berbahaya pada halaman web dan mencuri informasi pengguna yang dimasukkan.
Fuzzing Dir
Dirsearch adalah sebuah alat sederhana yang digunakan untuk melakukan pencarian direktori dan file pada sebuah situs web. Perintah dirsearch -u http://192.168.100.126:8080/
dapat digunakan untuk melakukan pencarian direktori dan file pada situs web dengan alamat IP 192.168.100.126 pada port 8080.
Dalam penggunaan dirsearch, kami menemukan beberapa direktori pada situs web yang kami telusuri, yaitu /console
, /login
, dan /output
. Dari ketiga direktori tersebut, terdapat satu direktori yang menarik perhatian kami, yaitu /console
. Namun, saat kami mencoba membuka direktori tersebut, kami mendapati bahwa akses ke dalamnya terkunci dengan menggunakan PIN. Oleh karena itu, dapat dikatakan bahwa direktori /console
terkunci dan tidak dapat diakses oleh publik.
Exploitation
Pada situs web yang kami telusuri, kami memfokuskan perhatian kami pada halaman utama yang dapat digunakan untuk memasukkan payload pada port 8080. Setelah melakukan beberapa penelusuran, kami memutuskan untuk menggunakan salah satu payload yang disediakan oleh PayloadAllThings, yaitu payload untuk SQL Injection. Dengan menggunakan payload ini, kami dapat menguji keamanan situs web dan mencari tahu apakah situs web tersebut rentan terhadap serangan SQL Injection.
SQL Injection
Dalam melakukan uji penetrasi terhadap situs web tersebut, kami menggunakan fitur Intruder yang disediakan oleh BurpSuite. Dengan menggunakan fitur ini, kami dapat melakukan brute force pada payload yang telah kami dapatkan sebelumnya dari PayloadAllThings. Tujuan dari penggunaan Intruder adalah untuk mengecek satu per satu hasil payload dari PayloadAllThings yang kami miliki dan mencari tahu apakah ada payload yang dapat berhasil melakukan serangan SQL Injection pada situs web yang kami telusuri. Dengan begitu, kami dapat mengetahui tingkat keamanan dari situs web tersebut dan menemukan celah keamanan yang dapat dimanfaatkan untuk melakukan serangan.
Untuk melakukan brute force pada parameter password, kami menggunakan fitur add pada BurpSuite. Dengan menggunakan fitur ini, kami dapat menambahkan payload yang ingin kami brute force pada parameter password tersebut. Hal ini bertujuan untuk mencoba semua kemungkinan payload yang dapat berhasil melakukan serangan SQL Injection pada situs web yang kami telusuri. Dengan begitu, kami dapat mengetahui tingkat keamanan dari situs web tersebut dan menemukan celah keamanan yang dapat dimanfaatkan untuk melakukan serangan.
Setelah menambahkan payload yang ingin kami brute force pada parameter password, kami memilih attack type pada BurpSuite. Kami memilih tipe attack yang disebut sniper, yang berarti BurpSuite akan mengirim satu request pada suatu waktu, mengirimkan satu payload pada setiap request tersebut. Setelah itu, kami memasukkan payload SQL Injection pada menu payload Intruder di BurpSuite. Hal ini dilakukan untuk melakukan uji penetrasi pada situs web dan mencari tahu apakah situs web tersebut rentan terhadap serangan SQL Injection.
Pada gambar yang ditunjukkan di bawah ini, terlihat bahwa terdapat perbedaan jumlah length dari hasil response brute force yang diperoleh. Hal ini menunjukkan bahwa terdapat beberapa payload yang berhasil melakukan serangan SQL Injection pada situs web yang kami telusuri, dan beberapa lainnya gagal. Oleh karena itu, kami dapat menyimpulkan bahwa situs web tersebut rentan terhadap serangan SQL Injection dan perlu dilakukan tindakan pencegahan untuk meningkatkan tingkat keamanannya.
Setelah melihat perbedaan jumlah length dari hasil response brute force yang diperoleh, kami memutuskan untuk menggunakan payload yang lebih spesifik untuk melakukan serangan SQL Injection pada situs web tersebut. Kami menggunakan payload berikut: "or 1=1 --"
. Setelah melakukan brute force dengan menggunakan payload tersebut, kami mendapatkan hasil redirect pada directory /scan
. Hal ini menunjukkan bahwa serangan SQL Injection berhasil dilakukan pada situs web tersebut dan kami mendapatkan akses ke direktori /scan
.
Setelah berhasil melakukan serangan SQL Injection dan mendapatkan akses ke direktori /scan
, kami menemukan beberapa package yang dapat digunakan pada situs web tersebut. Beberapa package yang kami temukan antara lain bash
, bzip
, cat
, eicar
, hello
, netcat,
dan python
. Hal ini menunjukkan bahwa situs web tersebut memiliki beberapa package yang terinstall dan dapat dimanfaatkan untuk melakukan serangan.
Jika kita memasukkan perintah whoami
pada kolom pencarian filename pada direktori /scan
, maka akan muncul hasil scan summary seperti yang ditunjukkan pada gambar di bawah ini. Hal ini menunjukkan bahwa situs web tersebut memiliki celah keamanan yang dapat dimanfaatkan untuk melakukan serangan dan mendapatkan informasi sensitif dari server.
Post Exploitation
RCE and Reverseshell
Apabila kita menambahkan payload seperti "whoami|whoami"
pada kolom pencarian filename pada direktori /scan
, maka akan muncul hasil user dimana website ini dijalankan. Hal ini menunjukkan bahwa situs web tersebut memiliki celah keamanan yang dapat dimanfaatkan untuk melakukan serangan Remote Code Execution (RCE).
Selanjutnya, kita mencoba untuk membaca isi file dengan menggunakan perintah "ls"
.
Dan pada hasil pencarian, kita berhasil mendapatkan daftar file dan direktori yang terdapat pada server.
Baik, langkah selanjutnya adalah mencoba melakukan backconnect menggunakan payload yang didapat dari Revshell dengan bahasa Python.
Payload:
Privileges Escalation
Setelah berhasil melakukan backconnect dengan cara yang dijelaskan sebelumnya, selanjutnya kita dapat melakukan tindakan privilege escalation untuk meningkatkan hak akses dari user biasa menjadi user root.
Ketika kita berada di sini, kita juga memperoleh informasi sensitif yang tersimpan di dalam database. Menemukan file database yang digunakan oleh webapp menggunakan driver sqlite3 yang memiliki beberapa kode undangan
Bila kita pindah direktori dengan menggunakan perintah 'cd ..'
, kita dapat menemukan file yang mungkin menarik seperti yang digambarkan di bawah ini.
Menemukan file yang memiliki izin khusus: update_cloudav
dan dengan memeriksa kode sumber aplikasi, kita dapat melihat bahwa itu menjalankan freshclam
untuk memperbarui database.
Selanjutnya, kita mencoba menjalankan file ./update_cloudave
dan mendapatkan informasi seperti gambar di bawah ini.
Langkah selanjutnya adalah kita akan menggunakan sebuah payload tertentu untuk mencoba melakukan "exploit"
pada program ./update_cloudav
. Payload ini akan memungkinkan kita untuk memasukkan sebuah perintah yang disebut "/bin/bash"
pada program tersebut. Jika payload ini berhasil dieksekusi, maka kita akan mendapatkan hak akses penuh ke sistem dan bisa melakukan berbagai tindakan di dalamnya. Untuk menguji keberhasilan payload ini, kita akan menambahkan perintah tambahan ";/bin/bash"
pada payload yang sebelumnya