Write-up TryHackMe : Vulnversity

Hai teman-teman, pada artikel kali ini saya akan menulis pembahasan dari mesin Vulnversity yang ada di TryHackMe. TryHackMe merupakan sebuah platform online untuk mempelajari tentang dunia cyber security. Tujuan dari mesin Vulnversity adalah untuk mencari sebuah file yang bernama root.txt. Dengan menyelesaikan mesin Vulnversity diharapkan dapat mendalami dasar-dasar dari kemanan website. Berikut adalah tahapan-tahapan yang dapat kita jalankan untuk menyelesaikan mesin Vulnversity.

Connect via OpenVPN

Hal pertama yang dilakukan menyambungkan ke mesin Vulnversity melalui VPN.  Untuk menyambungkan ke mesin Vulnversity kita harus mengunduh terlebih dahulu configuration file yang berada pada https://tryhackme.com/access .

[email protected]:~# openvpn <yourFile>.ovpn

Setelah tersambung melalui VPN maka deploy mesinnya.

Enumeration

Tahap selanjutnya adalah kita menggunakan IP dari target yang kita miliki untuk mengetahui port mana yang terbuka dari sistem tersebut menggunakan tool yang bernama nmap. Caranya adalah dengan menuliskan perintah dibawah ini pada terminal linux:

[email protected]:~# nmap -A -Pn 10.10.166.125

Kita dapat melihat bahwa “Apache Server” sedang berjalan pada port 3333. Saat membuka IP di browser dengan port 3333, kita dihadapkan dengan aplikasi web yang sedang berjalan. Setelah menelusuri website tersebut ternyata tidak ada hal yang menarik.

Sekarang kita perlu menemukan direktori yang terdapat pada website tersebut yang berisi hal menarik seperti fitur unggah file yang dimana kita dapat mengunggah reverse shell melalui fitur tersebut. Dalam hal ini kita dapat menggunakan tool yang bernama dirbuster. Jalankan aplikasi dirbuster. Untuk wordlistnya menggunakan file yang berada di /usr/share/wordlists/wfuzz/general/common.txt .

Kita menemukan beberapa direktori. Diantaranya adalah direktori “/internal” dan “/internal/uploads”. Ketika membuka direktori “/internal/”, ternyata terdapat form upload didalamnya.

Hal pertama yang perlu diperiksa dengan adanya form upload adalah file ekstensi apa yang diperbolehkan untuk diupload. Kita siapkan terlebih dahulu file reverse shell PHP yang berada pada /usr/share/webshells/php/php-reverse-shell.php. Edit file php-reverse-shell.php menggunakan perintah berikut:

[email protected]:~# nano /usr/share/webshells/php/php-reverse-shell.php

Kita perlu mengedit <IP> dan <Port> untuk koneksi balik kita. Yang kita butuhkan adalah melakukan perintah berikut:

[email protected]:~# Sudo ifconfig

Pilih Alamat IP yang disediakan dengan antarmuka “tun0”.

Gaining Access

Setelah kita menyiapkan file reverse shell. Kita buka tool yang bernama burpsuite untuk mengintercept request dari client. Setelah itu upload file reverse shell ke browser. Maka di brupsuite akan muncul tampilan seperti ini.

Setelah itu kirim ke intruder untuk melakukan brute force ekstensi file yang diperbolehkan untuk diupload. Kita menggunakan payload /usr/share/seclists/Fuzzing/ extensions-most-common.fuzz.txt .

Setelah itu klik “start attack”.

Kita bisa mengetahui ekstensi mana yang diperbolehkan diupload dengan melihat tabel Length dimana bisa dilihat ekstensi phtml panjangnya berbeda dari yang lainnya. Setelah kita tahu file reverse shell kita berhasil diupload kita harus mengetahui dimana tempat file tersebut sekarang berada. Sebelumnya kita sudah mengetahui bahwa terdaapat direktori /internal/uploads dan ternyata disanalah letak file yang telah kita upload.

Sebelumnya kita harus me-listen revere shell yang telah kita upload menggunakan “NetCat”. Dengarkan semua koneksi yang masuk dengan perintah berikut:

[email protected]:~# nc -lvp 4444

Setelah itu jalankan reverse shell yang telah kita upload dengan meng klik file php-reverse-shell.phtml yang berada di direktori /internal/uploads. Maka di terminal akan muncul seperti gambar berikut dimana kita telah masuk ke server sebagai www-data.

Kita dapat menemukan file user.txt yang dimana file tersebut adalah bagian dari tantangan vulnversity yang dimana kita juga harus menemukannya. Kita dapat menemukan file tersebut di direktori /home/bill ketik perintah berikut ini untuk membaca file nya.

$ cat user.txt

Privilege Escalation

Langkah selanjutnya adalah bagaimana kita bisa menemukan dan membaca file root.txt. Kita bisa mengetahui bahwa terdapat direktori /root yang ternyata tidak bisa kita buka dikarenakan kita masih sebagai www-data.

Sekarang kita perlu mencari file SUID. SUID (Set owner User ID up on execution) adalah jenis khusus izin file yang diberikan ke sebuah file. SUID dapat memberikan izin sementara kepada pengguna untuk menjalankan program / file dengan izin dari pemilik file dan bukan pengguna yang menjalankannya. Dengan kata sederhana pengguna akan mendapatkan izin pemilik file saat mengeksekusi file / program / perintah.

Kita dapat mencari file yang memiliki sifat SUID dengan menggunakan perintah berikut:

$ find / -perm /4000 2>/dev/null

Perintah tersebut bertujuan untuk mencari file yang dimana memiliki SUID dan menampilkannya ke terminal.

Diantara file SUID yang telah kita ketahui ternyata terdapat systemctl. Systemctl adalah biner yang mengontrol antarmuka untuk sistem init dan manajer layanan. Untuk membuat system berjalan kita menggunakan perintah systemctl selama waktu booting. Tidak seharusnya systemctl memiliki SUID.

Kita dapat memanfaatkan celah ini dengan memanfaatkan referensi dari GTFOBins . Kita mengikuti Langkah Langkah yang ada dengan sedikit modifikasi.

TF=$(mktemp).service

echo ‘[Service]

ExecStart=/bin/sh -c “cat root/root.txt > /tmp/output”

[Install]

WantedBy=multi-user.target’ > $TF

bin/systemctl link $TF

bin/systemctl enable –now $TF

Perintah tersebut bermaksud bahwa kita membuat sebuah variable dimana variable tersebut adalah sebuah service yang berisi perintah untuk membaca file root.txt dan memindahkan isinya ke /tmp/output yang akan dieksekusi oleh BASH. Setelah itu kita jalankan service tersebut menggunakan systemctl. Terciptalah file bernama output yang berada di /tmp dimana isinya adalah flag yang kita cari. Setelah itu tinggal kita baca saja isi file tersebut.

Akhirnya kita berhasil mendapatkan root.txt. Banyak sekali ilmu yang didapatkan Ketika menyelesaikan mesin vulnversity ini. Semoga write-up vulnversity dapat membantu kita dalam mendalami dunia cyber security. Happy Hacking!

Tinggalkan komentar