Enumeración
En primer lugar voy a comenzar realizando un escaneo de puertos con nmap:
Los puertos que se encuentran abiertos son 22 y 80.
Voy a ingresar la ip en el navegador para ingresar en la página web:
Se trata de un sitio que utiliza Joomla! como CMS. Como datos interesantes para rescatar veo que hay una publicación firmada por "Floris".
Revisando el código fuente encontré que había un comentario "secret.txt", así que se me ocurrió ingresar en la ruta /secret.txt, lo cuál me devolvió una serie de caracteres: Q3VybGluZzIwMTgh, parece ser un bsae64, voy a intentar descifrarlo:
Así obtengo "Curling2018!".
Voy a volver a la página para tratar de ingresar usando la contraseña "Curling2018!" y el usuario "Floris". Y así logre ingresar en el admin de la página.
Aclaración: Para obtener el acceso hay que ingresar desde superuser y no desde el login form.
El paso siguiente es obtener acceso al sistema.
Explotación
Navegando un poco por el panel del admin encontré en la sección templates dentro del panel de configuración, que es posible ingresar código PHO libremente, así que voy a pasarle un código para lograr una reverse shell. El código que voy a usar es el que se encuentra en el siguiente repositorio:
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
Una vez enviado el archivo tuve que hallar en que directorio se almacenaba para ingresarlo en la url y lograr la reverse shell, para eso me apoyé en gobuster:
Así fue que encontré el directorio "templates", ahora para poder activar la reverse shell voy a ingresar la url junto con el nombre del template y el archivo malicioso creado: 10.10.10.150/templates/protestar/"nombre_archivo.php".
Importante previo a cargar la url abrir un puerto de escucha con netcat para poder obtener la devolución a la llamada:
Y asi logré ingresar al sistema.
Escalada de Privilegios
Para lograr escalar privilegios voy a navegar hasta el usuario Floris, en donde veo que se encuentra la bandera de usuario, pero lamentablemente no podemos acceder a ella tan fácilmente. También noté que hay un password_backup, al cuál si tengo acceso.
Al abrirlo me encuentro con que esta en formato hexadecimal, así que voy a usar el comando xxd -r para revertirlo y redirigir la salida a un nuevo archivo:
Ahora voy a descomprimir el archivo usando bzip:
Pero este archivo que me muestra al usar el cat es algo extraño, así que use file para ver que tipo de archivo era, y resulta que es un gzip, el cual hay que descomprimir:
Y me encuentro con que al descomprimirlo hay otro archivo comprimido nuevamente en bzpi2. Voy a descomprimir nuevamente:
Volví a usar el comando file para ver el tipo de archivo del documento y era un archivo tar, con lo cuál también hay que descomprimir:
Y ahora si! Obtuve la contraseña, lo que voy a intentar ahora es ingresar mediante ssh con el usuario floris y la contraseña que encontré:
Una vez dentro fácilmente obtengo la bandera user.txt, simplemente listando los archivos.
También me pareció interesante la carpeta "admin-area", ya que es propiedad del usuario root:
Investigando un poco noté que el valor de report es un output del valor del input, con lo cual es posible que si logro cambiar el valor del input por el archivo donde se encuentra la bandera de root pueda ver su contenido en el archivo report:
Y de esta manera finaliza la máquina! Espero que este tutorial te haya ayudado!