Quick4
Máquina de dificultad fácil de la plataforma HackMyVM
Reconocimiento
Para empezar lo que vamos a hacer es un escaneo a toda la red para ver qué IP es la que tiene la máquina quick4

Escaneo de puertos
Una vez que tenemos cuál es la dirección IP de la máquina que vamos a intentar hackear vamos a ver qué puertos tiene abiertos

Vemos que tiene abiertos los puertos 22 y 80.
Una vez visto esto vamos a ver qué versiones son las que están corriendo por detrás de los servicios que está alojando esta máquina.

Una vez que hemos visto esto lo que voy a hacer es ver qué versiones tienen los servicios que corren en esta máquina.

Para terminar con todo el tema del reconocimiento voy a hacer un descubrimiento de posibles rutas de la página web.

Web
He visto una ruta que me ha llamado la atención que es el de “employee” pero antes de mirarla vamos a ver la página web para ver cómo es
Bueno esto es lo que nos encontramos una vez que accedemos a este servicio web

Arriba a la derecha nos sale un panel de login en el cual nos vamos a registrar

Y esto es lo que nos sale una vez que nos registramos en el panel de login

Mirando en las opciones que tenemos a la izquierda, hay un apartado concretamente el “Contact” en el cual podemos ver datos sensibles de gente de la empresa

Y realmente estuve un rato mirando y no había nada más interesante en la página que mereciese la pena mirar, por lo que volví a la lista de rutas que habíamos encontrado
En la ruta de direcciones encontradas había algunas interesantes como por ejemplo robots.txt (la cual no tenía literalmente nada) y employee la cual tenía un login para empleados de la empresa

Capturé la solicitud para ver cómo funcionaba con burpsuite y vi lo siguiente a la hora de probar con un bypass con SQLI

A la hora de mandar la solicitud nos indicaba que si queríamos ver el redireccionamiento de la página por lo que el bypass con SQLI ha funcionado
Ahora vamos a entrar en la cuenta del administrador de la siguiente manera, sabiendo que es vulnerable a bypass con SQLI

Y ahora ya hemos ganado acceso a la cuenta de administración de la página web, por lo que ahora vamos a ver de qué manera podemos entrar a la máquina que está alojando dicho servicio web
En la sección de empleados hay un apartado en el que tú puedes subir fotos así que vamos a intentar colarle una reverse shell en ese apartado de subir fotos, así que para ello vamos a capturar la solicitud de subir fotos con burpsuite (con la foto ya subida a dicho apartado)

Pero a la hora de subirla la respuesta del servidor a la solicitud de subir la imagen nos dice que el formato es inválido ya que no es ni de tipo JPEG, PNG o GIF

Por lo que tenemos que hacer es añadir lo siguiente a nuestro archivo con el código en PHP

Ahora si probamos a subir dicho archivo sí que no nos pone ningún impedimento
Muy bien pues una vez que hemos hecho esto, para que el código PHP se ejecute (porque lo hemos subido como una foto) tenemos que loguearnos como el usuario “Nick Greenhorn” ya que es el usuario en el que hemos subido la foto, así que como no sabemos su contraseña lo que vamos a hacer desde el panel de admin que tenemos es cambiar su contraseña.

Una vez que la hemos subido vamos a cambiarnos de usuario y vamos a iniciar sesión como el usuario “Nick Greenhorn” del cual tenemos el correo porque aparecía en la página esa en la que estaban todos los correos de todos los empleados
Antes de loguearnos con la cuenta del usuario “Nick Greenhorn” vamos a ponernos en escucha por el puerto 1212 que es donde le hemos indicado a la reverse shell que se conecte

Y ahora vamos a loguearnos

Escalada de privilegios
Nos damos cuenta que no nos carga la imagen pero si vamos a la terminal en la que estábamos en escucha por el puerto 1212 vamos a ver que se ha establecido una conexión, es decir que hemos ganado acceso a la máquina

Una vez que estamos dentro, nos damos cuenta de que estamos como el usuario “www-data” lo cual es normal ya que es el usuario que suele encargarse del servicio de apache en las máquinas linux
Después de un rato mirando dónde podía estar la flag de usuario (porque hay dos una como usuario y otra como root), he encontrado un fichero user.txt en el directorio /home

Una vez que ya tenemos esta flag vamos directos a ver qué manera tenemos de escalar privilegios, he probado con “sudo -l”, “sudo -i”, he mirado por si el usuario por casualidad tenía permisos para hacer contenedores de docker y nada hasta que he visto lo siguiente en el archivo /etc/crontab

Parece ser que el usuario root ejecuta cada minuto un script ubicado en /usr/local/bin/backup.sh el cual contiene lo siguiente

El usuario root está creando un archivo tar comprimido con gzip de /var/www/html pero como lo está haciendo a toda la carpeta lo que podemos hacer es crear archivos específicamente con nombre de parámetros que tiene tar, para que tar lo interprete como un parámetro y no como un archivo
Primero nos vamos a /var/www/html ya que es el directorio en el que el tar hace el comprimido, y ahora vamos a crear los siguientes archivos los cuales van a permitirnos elevar privilegios

Lo que hemos creado es lo siguiente:
- Un archivo --checkpoint=1 <- este archivo actúa como un trigger que se comprueba mientras que tar procesa la creación del archivo
- Un archivo --checkpoint-action=exec=sh shell.sh <- este otro archivo lo que hace es que se ejecute un comando cuando ese trigger ocurre
- Por último un archivo shell.sh <- este último archivo es el que tiene toda la lógica de cómo vamos a conseguir nosotros una reverse shell como root
Ahora lo que vamos a hacer es simplemente salirnos de la conexión que tenemos y esperar para ver si nos reporta la reverse shell como el usuario root
Y vemos que nos conectamos a la máquina como el usuario root

Para sacar la flag del usuario root he supuesto que estaba en su directorio de trabajo y efectivamente ahí estaba
