HTB Write-up – Popcorn

Buenas!

Como ya sabéis desde hace ya un tiempo, que en la comunidad hacker, principalmente en los canales de Telegram, se ha acogido muy bien la plataforma de Hackthebox. En el blog, varios compañeros estamos jugando en el mismo y nos gustaría ir publicando varios write-up de máquinas retiradas con objeto de facilitar diferentes soluciones para aportar a la comunidad.

 

En este caso, se trata de la solución de la máquina Popcorn 😉

 

 

El write-up se divide en tres fases:

  • Enumeración.
  • Explotación
  • Escalada de privilegios

 

Enumeración

Enumeración con nmap

Empleando la herramienta por excelencia nmap:

 

 

Se identifican los puertos/servicios:

  • 22 – SSH
  • 80 -HTTP

Enumeración de directorios

Para ello, se emplean herramientas como dirseach y el script de “http-enum” de nmap:

 

 

De esta manera, se localiza el directorio “torrent”:

 

Como se observa dispone de un formulario de login, en dónde parece que tiene habilitado el registro de usuarios. De esta manera, se procede a registrase pudiendo acceder a la parte de post-autenticación.

 

Explotación

 

Con el acceso a la parte de post-autenticación, se inicia el proceso de explotación.

Una vez dentro, se identifica una funcionalidad de subida para ficheros torrents, en dónde se encuentra subida una Kali. Se procede a identificar si cuenta con mecanismos de protección tratando de subir un fichero php.

 

 

Sin embargo, tras examinarlo se confirma que solo acepta ficheros .torrent, por lo que se busca uno y se procede a subir para ver su comportamiento y la ruta dónde se guarda:

 

 

Una vez subido, se observa que se puede modificar permitiendo subir un screenshot (esto sí me hubiera fijado mejor, no haría falta subir ningún Torrent sino directamente usar el del Torrent de Kali subido).

 

 

En principio parece que sólo acepta ficheros de imagen: jpg,jpeg, png,… Sin embargo, jugando con los parámetros “filename” y “content-type” se identifica que no valida el filename, solamente el Content-type. A través de la siguiente petición:

Se logra subir una shell:

 

 

Siendo la ruta de la imagen:

 

 

Por lo que accediendo a la carpeta /torrent/upload/ el servidor dispone de un directory listing, pudiendo ejecutar el fichero subido. En este caso, se ha subido una simple webshell de PHP:

 

Logrando acceder a la flag de user:

 

 

Escalada de privilegios

 

Se inicia el proceso de escalada de privilegios para lograr ser root en la máquina.

Con la webshell subida, se lanza un necat a nuestra máquina en la escucha para disponer de una shell reversa.

 

Recibiendo la llamada en el listener:

 

 

En primer lugar, se identifica la versión del kernel:

Linux popcorn 2.6.31-14-generic-pae #48-Ubuntu SMP Fri Oct 16 15:22:42 UTC 2009 i686 GNU/Linux

Que se encuentra bastante desactualizado, por lo que se buscan posibles exploits:

 

 

Adicionalmente, se emplea la herramienta linux-exploit-suggester para ver los exploits disponibles de acuerdo con la versión del kernel. Tras probar algunos, se logra la escalada con el exploit de full-nelson:

 

[+] [CVE-2012-0056,CVE-2010-3849,CVE-2010-3850] full-nelson

Details: http://vulnfactory.org/exploits/full-nelson.c
Tags: [ ubuntu=9.10|10.04|10.10 ],ubuntu=10.04.1
Download URL:
http://vulnfactory.org/exploits/full-nelson.c

 

Accediendo a la flag de root:

 

Se trata de una máquina sencilla, pero entretenida para practicar.

Espero que os haya gustado y resultado útil.

Nos vemos en la siguiente entrada 😉

Saludos.

N4xh4ck5

La mejor defensa es un buen ataque

2 comentarios en «HTB Write-up – Popcorn»

  1. Felicidades por la entrada! Sucinta pero bien explicada. Sólo tengo una duda, en la parte que dices » jugando con los parámetros “filename” y “content-type” se logra subir una shell» a qué te refieres con lo de jugar con los parámetros? Entiendo que no te aceptaba el .php y modificaste algo para que sí lo aceptase?

    Gracias de antemano!

    1. Hola Sanjaer,

      Me refería a comprobar si el servidor valida ambas cabeceras o no, en el caso de hacerlo, si lo hace correctamente o bien mediante lista negra. De esta manera,se identifica que el servidor no valida el filename, solamente el Content-type.

      He añadido una captura que lo refleja para dejarlo más claro 😉

      Saludos y gracias!

Los comentarios están cerrados.