HackTheBox Awkward Write up
Information Gathering
Scanning dengan Nmap seperti biasa dan kita bisa melihat Port yang terbuka seperti Port 22
SSH dan Port 80
http nginx 1.18.0
. Selanjutnya kita mencoba fokus pada Port 80
http.
Kita mencoba fuzzing directory dan mendapatkan directory seperti gambar dibawah, disini dari fuzzing directory tidak ditemukan directory yang memungkinkan exploitasi. Kita mencoba dengan cara lain.
Disini kita melihat source code html dan mendapatkan file app.js yang berada pada directory javascript. Dan disini kita mencoba mencari directory maupun informasi yang penting pada website:
Kita menemukan directory /hr yang mengarah pada login panel, directory /dashboard
yang mengarah pada directory /hr
. kami juga menemukan directory yang ada pada Api, seperti: all-leave
, submit-leave
, login
, staff-details
, store-status
.
Setelah kita mencoba login panelnya kita disuguhkan login dengan parameter username dan password. Dari sini kita juga belum mempunyai username dan password tersebut. Setelah mencari cari ada kerentenan apa di login panel ini. Kita mendapatkan sesuatu yang ada di extension cookie firefox. Disini memperlihatkan bahwa value pada token terdapat nama guest
, kita mencoba mengubah guest
menjadi admin
. Dan ternyata kita bisa langsung masuk ke dalam admin dashboard tidak memerlukan username dan password. Kerentanan ini mungkin bisa dinamakan Bypass Admin dengan mengubah value pada token
. Tapi kalau lihat ada section untuk detail staf yang kosong dan statusnya store is down
Selanjutnya kita mencari lagi didalam dashboard ini tidak ada file uploader atau sesuatu yang menarik. Kita menemukan dengan melihat Network pada inspect element. Kita menemukan Api yang terhubung pada /api/staff-details
, /api/store-status?url="http://sote.hat-valley.htb"
Kita mencoba membuka directory /api/staff-details
mendapatkan tampilan error. Disini dari cookie editor editor mendapatkan token, disini kita juga mencoba bypass cookie dengan cara mengapus token cookie.
Setelah menghapusnya dan merefresh tampilan yang ada pada website, kita mendapatkan perubahan tampilan dan disini kita mendapatkan information sensitive. Information sensitive ini terdapat username dan password, tetapi disini password yang kita dapatkan terenkripsi dengan hash.
Dan setelah kita mencoba hash apa yang digunakan password ini kita mendapatkan hash SHA-256 yang kemungkinan. Disini kita mencoba langsung cracking password hash dengan john ripper dengan wordlist rockyou. Setelah cracking selesai kita dapat melihat password dengan nama chris123
dengan username christopher.jones
Setelah mendapatkanya kita langsung mencoba menggunakan password ini untuk login kedalam dashboard lagi. Dan ternyata mendapatkan response sukses masuk kedalam dashboard admin dengan username dan password tersebut.
Disini kita melihat lagi cookie editor tersebut juga berubah dengan id yang didapat tadi. Kita mencoba cracking token value yang didapat dengan tools john. Disini kita berhasil cracking password hash yaitu 123beany123
.
Kita mencoba melihat yang didapat dari Request Network tadi, dan disini kita mencoba menyambungkan ke pc kita untuk mengecek apakah website ini terdapat kerentanan SSRF atau tidak. Dan ternyata disini kita dapat Response dari penginputan pada parameter url=
kita mendapatkan directory dari website kita sendiri.
Kita mencoba fuzzing lagi dengan mengubah http://127.0.0.1:FUZZ
dan disini mendapatkan 3 status code 200 yang menandakan Response dari Fuzzing ini dapat kita lihat secara langsung. Diperlukan URL API endpoint untuk memeriksa statusnya yang dapat kami coba SSRF: Pertama, saya mencoba localhostURL dengan 80port
, dan dialihkan ke http://hat-valley.htb/
Exploitation
Kita melihat source code yang ada pada semua yang didapat dari Fuzzing tadi. Dan pada http://127.0.0.1:8080
dan lihat pada perubahan pada source code yang didapat
Saat kita mengubah port 3002
kita mendapatkan tampilan yang berbeda, pada port 3002
memberi kita semua API rute titik akhir serta source code yang ada di port ini, Ditemukan endpoint yang rentan terhadap LFI Perintahnya AWK adalah vulnerable. Jadi pada kerentanan ini dijelaskan bahwa AWK command Melewati variabel pengguna yang memiliki nilai yang didekodekan yang JWT token username dapat kita ubah apa pun yang kita inginkan.
Karena kami memiliki hidden token JWT, dan kami dapat membuat token dengan apa username dan fields yang kami inginkan, example:
Jika kita disini meneruskan sebagai nama pengguna, /' /etc/passwd '
kami mendapatkan hasil yang kita inginkan. Kita mendapatkan cookie dari request yang kita dapat dari cookie editor ataupun burpsuite. Kasus ini bila kita menggunakan jwt.io
dan kita dapat mengubah pada Payload di parameter username
, disni mencoba mengubah payload dengan yang kita inginkan.
Dari hasil payload tadi bila Cookie token kita ubah pada headernya dengan yang terbaru. Disini kita bisa menemukan kerentanan LFI yang dapat membaca isi /etc/passwd
pada website target. Dan gambar dibawah dijelaskan saya mencoba untuk mencari information sensitive yang ada di server dengan kerentanan LFI.
Dan kita mendapatkan backup file pada directory /Document/
. Disini terdapat directory backup yang ada file bean_backup_final.tar.gz
. selanjutnya mencoba download file tersebut dan menextrasknya.
Disini mungkin akan dapat information sensitive lagi, kita mencoba mencarinya lagi yang ada pada backup file tadi. Dan mendapatkan information sensitive pada directory .config/xpad/content-DS1ZS1
Kita mencoba login dengan information sensitive tadi, dan berhasil masuk pada SSH dengan:
Bila kita melihat hosts nya pada /etc/hosts
kita mendapat subdomain pada store.hat-valley.htb
. apabila kita membukanya, kita mendapatkan form login htaccess.
Disini mencari information sensitive lagi yang dapat login pada subdomain store
tadi. Setelah cracking password: 014mrbeanrules!#P
yang didapat kita berhasil masuk pada subdomain store
.
Kita juga mendapatkan source code dari subdomain store web di dalamnya yang terletak pada /var/www/store
.
Membaca README.mdakan memberitahu kita tentang,
- Mereka tidak menggunakan apapun database sampai sekarang
- Mereka menggunakan file untuk menyimpan data di dalam direktori ini
/product-details
yang menyimpan detail produk/cart
yang menyimpan item pengguna- Mereka verify produk mereka dengan Hat Valley Cart
Memeriksa pada file cart_actions.php
:
Post Exploitation
Saat memeriksa file, dan saya perhatikan sed
perintah ini digunakan untuk menghapus cart data file, yang dapat kita gunakan untuk memungkinan melakukan Remote Code Execution
.
Kita mencobanya dengan melihat payload yang ada pada GTFobins, Jadi kita dapat menggunakan -e
flag yang diberikan dalam bantuan sed command, ini memungkinkan kita untuk pass the script rev shell kita. Jadi mari kita lakukan bagaimana abuse perintah sed itu:
- Pertama input kita terlihat seperti ini:
- Yang akan digantikan oleh
$item_id
, Example dengan payload:
Disini kita mencoba mengexploitasikan dengan cara add cart, dan lihat hasil nya pada directory /var/www/store/cart
disini hasilnya dari add cart akan muncul.
Setelah itu kita buat file dengan code dibawah, dengan nama shell pada directory /tmp/
dan ubah permisionnya menjadi dengan chmod +x shell.sh
Selanjutnya ktia copy data yang kita add cart tadi menjadi backup. Dan kita menambahkan payload:
Dan kita intercept pada burpsuite setelah itu kita remove dan kita akan mendapatkan hasil request code. tambahkan payloadnya dengan yang tadi dan kita sambungkan dengan netcat.
Privileges Escalation
Disini kita mencoba medownload linpeas dan pspy untuk melihat sesuatu apa yang bisa melihat privileges apa yang bisa kita exploitasikan. Dari hasil log yang kita dapat dengan menscan tadi, kita dapat memodif leave_request.csv
Kita mencoba melihat isi file leave_requests.csv disini terdapat username. Kita mencoba menambahkan dengan cara echo "testingyupy" >> leave_requests.csv
Disini kita mendapatkan log seperti gambar dibawah yang dijelaskan bash menjalankan secara langsung dengan script notify.sh
Kita membuat file lagi dengan payload dibawah:
Dan menambahkan payload yang saya dapatkan pada GTFobins, dijelaskan payload ini akan mengeksekusi /tmp/root.sh
yang bisa menjalankan bash dengan root access