Lo primero es hacer el reconocimiento de puertos con nmap:
Y ahora como siempre con nmap vamos a inspeccionar estos puertos abiertos:
Y aquí tenemos los detalles de estos puertos:
Ahora vamos a analizar la tecnología implicada en el puerto 80 ya que sabemos que habrá una web, utilizaremos la herramienta whatweb:
Pero vemos cómo la dirección da un error porque no la encuentra, y esto se arregla añadiendo este dominio al fichero /etc/host para que la IP apunte a este dominio:
Y ahora si ejecutamos un whatweb ya no habrá ese error y el dominio ya estará disponible:
Tras inspeccionar esta web vemos que no hay nada interesante, por lo que debemos mirar a ver si existen subdominios donde podamos acceder; para ello usaremos un ataque de fuerza bruta por diccionario con wfuzz de esta manera:
De esta manera se hace un ataque por fuerza bruta para descubrir los subdominios; y nos encuentra uno:
Ahora esta dirección debemos añadirla al /etc/host para que nos funcione si intentamos acceder a ella:
Y ahora con esta dirección y habiéndose añadido al fichero de host ya podremos entrar:
Ahora vamos a comprobar si al escribir un correo estamos ante un server side template injection, y efectivamente lo es, por lo que podremos ejecutar comandos:
Ahora para explotar esta vulnerabilidad, debemos conocer el lenguaje que está hecha la web, el cual es Nose.js:
Ahora buscaremos por internet una inyección de código para insertarlo en webs que tengan esta vulnerabilidad y sean Node.js, donde encontramos esta web que explica el SSTI en webs de node.js:
https://disse.cting.org/2016/08/02/2016-08-02-sandbox-break-out-nunjucks-template-engine
Copiaremos esa línea y vamos a ejecutarla en la web, pero a través de burpsuite, por tanto escribimos un correo aleatorio para que burpsuite lo intercepte (debemos configurar el certificado SSL para que burpsuite intercepte la petición):
Y esta petición será interceptada por burpsuite:
Y pegaremos todo esto:
Aunque tenemos que escapar las comillas para que no haya problemas con ellas, quedando de la siguiente manera:
Y si enviamos todo esto, vemos cómo recibimos una respuesta donde se ejecuta el código del /etc/passwd:
Llegados a este punto yo puedo ejecutar cualquier código, por ejemplo un whoami en lugar de un /etc/passwd; y vemos como nos da un email:
Ahora que podemos ejecutar comandos, vamos a comprobar si hay conexión entre esta máquina remota y mi equipo; para ello vamos a montar un servidor web desde donde vemos las peticiones que se reciben, para después ejecutar una petición a este servidor desde la máquina víctima con curl:
Y ahora lanzamos un curl a la IP de la interfaz de nuestro PC que está conectada a hackthebox (que es la tun0, podemos verla con ifconfig), para ver si desde la máquina víctima llega la petición al servidor web:
Y vemos cómo llegó la petición a nuestro servidor web, por lo que hay conexión:
Ahora desde este servidor podemos subir un index.html con cierto código que se ejecutará en la máquina víctima:
Ahora montamos el servidor con este fichero html que tiene un código que se encargará de enviarnos una reverse shell:
Ahora nos pondremos en espera con netcat por el puerto 443:
Y por último lanzamos la petición con curl desde la máquina víctima al servidor web para que obtenga ese código que nos enviará una reverse shell a netcat:
Lo ejecutamos y ya tenemos acceso:
Ahora que ya hemos ganado acceso a esta máquina, vamos a ir al directorio home para buscar la flag:
Ahora vamos a escalar privilegios, para ello vamos a ejecutar el comando getcap -r /2>/dev/null, donde debemos fijarnos en la segunda fila porque dice que perl puede ejecutar cosas con plenos poderes:
También podemos comprobar que podemos ejecutar código como root desde perl con el comando ls -la:
Ahora debemos crear un script en perl que nos sirve para elevar los privilegios, el cual será este:
Para ejecutarlo lo hacemos con echo -ne:
Y ahora ya somos root:
VÍDEO DE YOUTUBE: https://www.youtube.com/watch?v=Rvr4eBTecY8&t=17s


































