Penyelesaian Challenges Surabaya Hacker Link VM Heaven

Penyelesaian Challenges Surabaya Hacker Link VM Heaven

Karena mesin ini sudah ditarik dan sudah dirasa tidak relevan untuk sebuah challenges, maka dari itu saya membuat penyelesaian bagaimana menyelesaikan mesin vm heaven dari Surabaya Hacker Link.

Sebenarnya untuk menyelesaikan challenges ini hampir tidak dibutuhkan tools hacking khusus seperti sqlmap ataupun metasploit karena challenges ini sangat mudah, tidak diperlukan pengetahuan khusus tentang hacking. cukup terbiasa dengan sistem operasi GNU/Linux dan pengetahuan mendasar tentang bagaimana melakukan pwning (owning) terhadap mesin maka VM dapat diselesaikan dengan mudah.

Tulisan ini saya dedikasikan untuk teman-teman yang masih merasakan kesusahan untuk menyelesaikan VM ini, karenanya penjelasan tentang challenges VM ini cukup panjang.

Pertama tidak akan dibahas bagaimana melakukan import VM pada Virtualbox / VMware karena hal tersebut sudah dijelaskan pada forum Surabaya Hacker Link itu sendri, maka saya asumsikan vm sudah di-import dan dijalankan.

VM Berjalan

Setelah VM berjalan, kita biarkan saja console tersebut karena tidak ada credentials yang diberikan untuk masuk kedalam VM itu, langsung saja kita mencari jalan masuk lain yaitu melalui service yang berjalan pada VM tersebut. Untuk mengetahui VM tersebut memiliki service apa saja kita perlu informasi mengenai IP VM dengan cara melakukan scanning menggunakan NMAP terhadap block IP yang dimiliki laptop dan mencari service dengan port 80 / webservice.

Mencari IP

IP sudah ditemukan, mengikuti apa yang tertulis di forum, kita perlu melakukan pengecekan apakah IP yang ditemukan sudah benar atau tidak dengan membuka service tersebut dan memastikan gambar yang muncul sudah sama seperti yang ada pada forum.

Tampilan Awal

Di atas merupakan tampilan index dari service web pada VM heaven ini. Hal umum pertama yang dilakukan adalah pengecekan source html, karena masih banyak developer yang menyimpan hal unik di comment html.

Check Source

Namun sayangnya tidak ada sesuatu yang menarik terhadap tampilan web ini, hanya sebuah tag img saja tanpa format html yang baik dan benar. Karena tidak ada sesuatu yang menarik, kembali pada forum dan dijelaskan bahwa kita perlu sebuah directory finder tool dengan wordlist yang umum. Karena sudah terbiasa dengan ffuf, saya lebih memilih tools tersebut untuk melakukan tugas directory search ini.

Fuzzing Folder

Setelah melakukan finding directory, ditemukan beberapa file dan folder yang cukup menarik, yaitu info.php dan folder uploads, untuk folder manual sendiri sepertinya itu adalah folder bawaan dari apache tentang manual book web service apache itu sendiri. Langsung saja dibuka file dan folder tersebut.

File info.php

Untuk file info.php sendiri sepertinya file ini menjalankan fungsi php bernama phpinfo, sama seperti nama filenya. sepertinya developernya lupa untuk menghapus file ini. Umumnya phpinfo dijalankan untuk mengetahui apakah engine php pada server sudah berjalan atau tidak dan beberpa pengecekan informasi penting lainnya seperti lokasi document_root dan sebagainya. Namun pada file ini kurang ada yang menarik, kita lanjutkan ke folder uploads

Uploads Directory

Pada folder upload terlihat bahwa fungsi directory listing tidak dimatikan oleh developer hal ini menyebabkan folder yang tidak mempunyai file bernama index.html / index.php akan menampilkan seluruh isi file yang ada pada folder itu. pada folder / directory ini terdapat 2 file yang menarik, bisa dilihat sendiri nama-nama filenya apa. Kita baca readme.txt dulu.

Shell Readme

Dijelaskan bahwa file shell.php adalah webshell atau yang lebih dikenal dengan backdoor, untuk menjalankan backdoor ini diperlukan paramter eden dan diikuti oleh value yang merupakan command yang akan dijalankan pada server. Karena kurang yakin kita cek terlebih dahulu apakah file shell.php bisa menjalankan command server atau tidak. Dilakukan pengecekan dengan command id

Check Webshell

Server merespon command tersebut dan menampilkan id user saat ini yaitu 33 untuk user www-data, setelah cukup melakukan pengecekan lainnya seperti uname -a, free -m dsb. Langsung kita melakukan reverse shell untuk mendapatkan command yang lebih interactive pada terminal dengan menggunakan netcat disertai dengan argumen -e untuk melakukan execute terhadap file /bin/bash, perlu diingat pada versi netcat yang baru argumen -e sudah dihapus karena dirasa cukup riskan jika digunakan.

Netcat Listen

Pada local machine / laptop kita, kita melakukan listening terhadap port yang digunakan untuk menerima kiriman netcat dari server, perlu diingat kadang perlu dilakukannya penonaktifan firewall untuk dapat membuka port dan dapat diakses dari luar.

Netcat Command Shell

Pada web server kita melakukan kontak terhadap local machine kita pada port 4444 dan IP local machine yang sudah dilakukan pengecekan sebelumnya.

Netcat Connection

Jika berhasil maka netcat pada local machine akan menunjukan informasi jika ada koneksi, kita cek ulang menggunakan command id, dan server VM merespon dengan baik, setelah melakukan reverse shell, kita melakukan spawn shell agar reverse shell yang didapatkan lebih interactive dan tidak akan terputus ketika tidak sengaja menekan Control + C

Reverse Shell Interactive

Setelah mendapatakan interactive shell, seperti biasa saya selalu melakukan pengecekan terhadap port yang terbuka pada server dengan command berikut.

Check Open Port

Terdapat 2 Port yang tidak umum terbuka pada server VM ini, karena penasaran dilakukannya pengecekan service yang berjalan pada server dengan command berikut.

Check Running Services

Terlihat bahwa ada service ftp dan ssh pada server namun diawal saya hanya melakukan pengecekan terhadap port 80 saja dan lupa untuk melakukan pengecekan terhadap port-port lainnya, dilanjut dengan memeriksa kedua file konfigurasi terhadap service ftp dan ssh.

Check SSH Config

Pada saat pengecekan file konfigurasi saya hanya ingin melihat data konfigurasi Port, yang ternyata ssh melakukan listen pada port 65535 dan sepertinya untuk port 65534 adalah milik dari service ftp untuk meyakinkan diri kita cek file konfigurasi tersebut.

Check FTP Config

Ternyata dugaan benar dan ada sesuatu yang menarik pada konfigurasi ftp service yaitu dimatikannya password terhadap user anonymous, hal ini membuat penasaran apakah ada yang melakukan upload file pada service tersebut atau tidak, langsung saja karena pada konfigurasi file terlihat lokasi folder untuk anon ada pada /var/ftp kita pindah ke directory tersebut.

Open FTP Directory

Hanya terdapat 1 file pada directory ini, namun dari nama file sepertinya ini sesuatu yang rahasia. kita check isi dari file rahasia tersebut. Isi file tersebut menyatakan bahwa terdapat user baru bernama ada dengan password yang tertulis jelas pada file tersebut. Langsung saja kita melakukan switch user / su untuk mengecek apakah credentials tersebut valid atau tidak.

Switch User

Nampaknya user tersebut belum melakukan perubahan password sehingga saya berhasil masuk kedalam sistem sebagai user adam, karena berhasil mendapatkan user saya melakukan pengecekan terhadap isi folder home user tersebut dengan memanggil cd ~ lalu melakukan list file terhadap folder tersebut dan nampaknya ada file yang menarik yaitu .bash_histoy yang mana file tersebut menyimpan sejarah / history command yang dilakukan oleh user.

Check History

Ada sebuah file yang dijalankan oleh user adam, nampaknya adam menggukan command sudo yang mana command tersebut digunakan untuk menaikan privileges user ke privileges yang lebih tinggi yaitu root. hal ini membuat saya apakah dapat mengambil / mendapatkan user melalui user ini secara tujuan dari VM ini adalah user root. adam menggunakan sudo untuk file yang ada pada directory /tmp dengan nama get_root.py nampaknya menarik, mari kita cek.

Check TMP Directory

Ternyata pada folder tmp tidak ada file apapun, nampaknya file tersebut telah dihapus. kembali ke history, user adam menggunakan command sudo dengan kata lain user tersebut memiliki akses ke user yang lebih tinggi / user root. kita cek terlebih dahulu apakah sudo memberikan hak khusus terhadap adam dengan melakukan pengecekan command sudo -l

Check sudo

Adam sangat spesial, dia dapat menjalankan 2 command dengan sudo tanpa harus menuliskan password. command tersebut adalah python dan /tmp/get_root.py, karena get_root.py tidak ada kita coba sudo pyton dan ternyata command berjalan dengan baik, langsung saja kita melakukan spawn shell melalui python menggunakan module pty.

rooted

Well done, user root didapatkan dengan kata lain challenges ini selesai dan kamu berhasil melakukan pengambil alihan VM Heaven ini.

Sebenarnya terdapat beberapa hal yang ketinggalan saat menyelesaikan challenges ini, yaitu port ssh yang tidak discan karena pada saat melakukan scanning tidak dilakukan scan secara menyeluruh sert penggunaan service ftp dan ssh. namun hal tersebut saya lampirkan di bawah ini

nmap all port
Penggunaan command nmap untuk melakukan scanning terhadap serluruh port dan sercara agresif sehingga didapatkannya service ssh dan ftp pada custom port dan terlihatnya file rahasia.txt

ftp command
Penggunaan command ftp untuk mengambil file rahasia.txt jika sebelumnya tidak mendapatkan akses webshell.

ssh command
Penggunaan command ssh untuk login sebagai adam ketika mendapatkan credentials user teserbut.

Selesai, tunggu challenges berikutnya.