Enumeración
Para comenzar voy a realizar un escaneo de puertos con nmap:
Veo que se encuentran abiertos los puertos 22, 80 y 443.
Voy a ingresar en la página para ver de que se trata:
Se trata simplemente de una imagen, la cual al ser estática no parece tener nada prometedor, con lo cual voy a realizar una búsqueda de directorios ocultos para ver si encuentro algo:
Esta búsqueda de directorios me dio varios puntos a analizar. Lo primero que hice fue analizar la ruta /cgi-bin/ pero no encontré nada de utilidad. Luego fui por la dutoa /dev y encontré 2 archivos interesantes:
El primero contenía un código hexadecimal:
Y el otro archivo unas anotaciones de tareas a realizar:
Por ahora me voy a centrar en el código hexadecimal, lo que voy a hacer es intentar convertirlo para ver si me devuelve algo de utilidad:
Y por lo que veo me devolvió una clave privada RSA, la cual voy a guardar ya que seguramente me sirva mas adelante.
Ahora voy a seguir analizando el resto de directorios que me devolvió el análisis con gobuster.
Las páginas /encode y /decode pareciera ser que permiten codificar y decodificar palabras:
Realizando alguna pruebas noté que estas páginas eran vulnerables a XSS (Cross Site Scripting), pero lamentablemente no había mucho que hacer con esa vulnerabilidad.
Para esta altura no sabía muy bien por donde seguir y opte por realizar un escaneo de vulnerabilidades, para eso usé nmap:
El escaneo me devolvió un bug llamado Heartbleed que afecta al puerto 443.
Explotación
Ya habiendo encontrado una vulnerabilidad potencial voy a tratar de explotarla.
Investigué un poco mas sobre esta vulnerabilidad y encontré un exploit: https://github.com/mpgn/heartbleed-PoC.
Así que bien, en primer lugar voy a descargar el repositorio y ejecutar el exploit:
Luego para abrirlo nos dirigimos al archivo out.txt y ahí tenemos todos los datos que recuperamos:
Dentro del parametro "text" se encuentra un codigo en base64:
aGVhcnRibGVlZGJlbGlldmV0aGVoeXBlCg==
Se me ocurrió que podía pasarlo a la pagina para decodificarlo y fue un éxito! Me devolvió una contraseña:
La contraseña es: heartbleedbelievethehype
Ahora voy a intentar iniciar sesión en SSH utilizando el RSA que obtuve (en la ruta /dev) al principio y la contraseña que recuperé en el paso anterior.
Y una vez dentro fácilmente se encuentra la bandera de usuario.
Escalada de Privilegios
Ahora bien, falta conseguir la bandera root.
Listando los directorios ocultos veo que hay un archivo llamado bash_history, el cual almacena los últimos comandos ingresados por el usuario:
Para este punto lo que hice fue probar ingresar los mismos comandos que había ingresado el usuario para ver a donde me llevaban y así logré obtener el acceso root.
Ahora simplemente resta navegar hasta la carpeta root y ahí se encuentra la bandera.
Felicitaciones! Espero que este tutorial te haya sido de ayuda.