Future

Difficulty: Medium

La IP de la máquina Future en mi caso:

Recon

  1. Realizamos un escaneo con Nmap contra el objetivo:

  • Se identifica el puerto 22/tcp (SSH) y el puerto 80/tcp (Servicio HTTP) en este caso ejecutando un servidor Apache.

  1. Con el puerto 80 ejecutando un servidor web Apache, el primer paso será acceder desde el navegador web a la IP:

  • Podemos añadir la IP al archivo /etc/hosts:

  1. Hacemos click en el texto en el centro de la página, que primero nos muestra un video de la película de regreso al futuro y la URL cambia a /transition/index.html y una vez se completa nos lleva a 1955.html:

  1. En el menú lateral aparecen múltiples enlaces, pero nos interesa HOMEWORK, ya que encontraremos un formulario en el que podemos subir un archivo:

SSRF (Server Side Resquest Forgery)

  1. Cómo el formulario nos indica que el formato del archivo tiene que ser HTML, creamos un archivo de prueba con la estructura básica HTML:

  1. Abrimos Burp, entramos por el navegador integrado a la página del formulario, subimos el HTML de prueba y capturamos la request:

  1. La enviamos al Repeater para analizar mejor el comportamiento del objetivo:

  • Parece que recibe correctamente la request pero no procesa el archivo HTML a PDF.

  1. Probaremos a ver si podemos ejecutar una conexión contra nuestro equipo atacante:

  • Ponemos una consola a la escucha en el equipo atacante:

  • Modificamos en el Repeater la request, cambiando el contenido del HTML, directamente sobre la request:

  • Recibimos lo siguiente, en la consola a la escucha:

  • Nos indica que la página objetivo utiliza wkhtmltopdf para pasar los HTML a PDF, por lo que puede ser nuestro vector de ataque.

  1. Modificaremos el HTML de la request en el Repeater, para intentar leer el archivo /etc/passwd:

  • En la consola que tenemos a la escucha recibimos el archivo codificado en base64:

  1. Copiamos el texto recibido y lo decodificamos:

  • Identificamos los siguientes usuarios:

    • marty.mcfly

    • emmett.brown

  1. Esto ha funcionado para obtener el contenido de /etc/passwd, cómo en la máquina víctima hemos visto que otro de los servicios es SSH, probaremos obtener las claves RSA de los usuarios por el mismo método. Modificamos la request en el Repeater:

  • Recibimos en la consola el contenido cifrado en base64:

  1. Lo copiamos y decodificamos:

  1. Movemos la clave RSA a un archivo id_rsa y le damos permisos para utilizarla:

  1. Realizaremos la conexión por SSH:

  • Pero tiene contraseña.

  1. Utilizaremos John The Ripper para crackearla:

  • Conseguimos crackear el hash y por lo tanto, la contraseña ssh del usuario marty.mcfly.

  1. Iniciamos sesión con las credenciales que hemos obtenido:

  • Verificar que el archivo id_rsa pertenece al usuario con el que estamos intentando hacer la conexión, en mi caso l4nk0n3.

  1. Una vez conectados, mostramos la flag de user.txt:

Privilege Escalation

  1. Queda escalar privilegios, por lo que buscaremos en que tenemos permisos de ejecución cómo root:

  1. Tenemos permisos sobre Docker, buscamos en GTFOBins (https://gtfobins.github.io/arrow-up-right) como utilizar el binario para escalar privilegios:

  • En mi caso en la máquina víctima no tenía acceso a internet, así que transferí la imagen de docker alpine desde mi máquina atacante:

  • Transferimos el tar a la máquina víctima por SSH:

  • En la máquina víctima:

  • Cargamos el archivo en Docker:

  1. Utilizamos el comando que hemos encontrado en GTFOBins para escalar privilegios:

  1. Navegamos por las carpetas y encontramos la flag del root:

Última actualización