Editorial

Information Gathering

Port and Service

Nmap scan report for 10.10.11.20
Host is up (0.026s latency).
Not shown: 65533 closed tcp ports (reset)
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: Did not follow redirect to http://editorial.htb
|_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 32.29 seconds

Setup

HOST

Initial Access

pada website dapat form "Publish with us", disini terdapat 2 form untuk set book cover, baik melalui url, atau file upload

SSRF - Dev

disini saya mencoba pada bagian bookurl apakah aplikasi tersebut melakukan request kepada url yang dikirimkan atau tidak

seperti yang dapat dilihat pada gambar diatas, aplikasi tersebut melakukan request ke url yang diinputkan. disini aplikasi tersebut menyimpan response body dari url tersebut

response body yang tersimpan

salah satu dampak dari SSRF adalah saya dapat melakukan pencarian port internal, khususnya terhadap internal webserver, disini saya akan menggunakan FFUF untuk melakukan fuzzing pada port

disini saya menemukan webserver yang berjalan pada port 5000, selanjutnya saya memeriksa response body dari internal webserver tersebut

internal webserver tersebut adalah sebuah API, disini terdapat beberapa endpoint yang tersedia. saya memeriksa response body dari setiap endpoint dan saya mendapatkan credential dari endpoint berikut

saya mendapatkan credential dev, saya mencoba untuk connect ke ssh dan berhasil masuk

Move to Prod

pada home directory user dev terdapat directory apps yang dimana didalamnya terdapat .git, disini saya memeriksa log commit dengan menggunakan git log

selanjutnya saya memeriksa perubahan yang terjadi berdasarkan hash commit dengan perintah git diff. disini saya mendapatkan sebuah credential dari user prod

saya memeriksa apakah prod meruapakan salah satu user atau bukan

ternyata prod merupakan salah satu user dari server tersebut, disini saya mencoba untuk login sebagai prod dan berhasil

Privilege Escalation to root

disini saya memeriksa daftar perintah yang dapat dijalankan oleh prod dengan menggunakan hak akses sudo

user prod dapat menjalankan script clone_prod_change.py dengan sudo, berikut ini adalah script dari file tersebut

script tersebut menggunakan module git, disini saya mencoba untuk memeriksa versi dari module git yang digunakan tersebut dengan cara berikut

versi module git yang digunakan adalah 3.1.29 yang dimana memiliki kerentanan remote code execution

disini saya mencoba untuk memeriksa kerentanan tersebut dengan membuat sebuah file pwned pada folder /tmp

file pwned telah berhasil dibuat pada folder /tmp dengan user root. selanjutnya saya akan membuat sebuah executable file untuk melakukan reverse shell

kemudian saya menjalankan nc listener dan trigger dengan menjalankan perintah berikut

disini saya berhasil mendapatkan root.

Last updated