🟢GreenHorn
En esta ocasión vamos a hacer el writeup de la máquina GreenHorn de Hack the Box, una máquina Linux de dificultad easy.
Última actualización
En esta ocasión vamos a hacer el writeup de la máquina GreenHorn de Hack the Box, una máquina Linux de dificultad easy.
Última actualización
Añadimos la IP 10.10.11.249
a nuestro /etc/hosts
y accedemos través del navegador.
Hacemos click en admin y nos lleva a una página para introducir una contraseña, y nos da la versión, con lo que podemos buscar un exploit público:
Encontramos 3 puertos abiertos
Vamos a buscar exploit para la versión pluck 4.7.18
. Encontramos este exploit:
¿Qué quiere decir esto?
Un atacante con una cuenta puede cargar un módulo falso en el sistema y ejecutar su contenido en el servidor. Esta es una vulnerabilidad crítica porque los desarrolladores no implementaron controles estrictos en los archivos cargados ni restringieron la ejecución de archivos en el servidor.
Si venimos al puerto 3000 que esta abierto en la máquina llegamos a esta página, que es una especie de GitHub propio de esta empresa:
Y en la parte de Explore encontramos un repo:
Navegando un poco encontramos unas credenciales:
Copiamos el valor del pass.php y lo crackeamos por ejemplo con crackstation:
Buuum! Ya tenemos una contraseña! Vamos a probarla con el login que nos encontramos antes:
Conseguimos acceder sin problema.
Si le damos a check writable options
nos devuelve todos los archivos y rutas en las que tenemos permisos de escritura:
Encontramos algún archivo interesante como /data/settings/langpref.php
que podríamos intentar manipular para obtener una reverse shell.
En Modules > Install a module
nos encontramos que podemos instalar un módulo, con lo que podemos intentar subir una webshell en PHP.
En Kali Linux por defecto tenemos una carpeta con webshells en la siguiente ruta:
Vamos a usar el php-reverse-shell.php
, y lo tenemos que editar con nuestra IP de atacante y el puerto por el que vamos a quedarnos a la escucha:
Para poder cargar módulos nuevos en este site necesitamos comprimir la shell en un archivo zip. Podemos hacerlo de la siguiente manera:
Entonces abrimos un listener con netcat por el puerto 1234
y subimos el zip con la shell:
Vemos que se ha instalado correctamente y para recibir la conexión en nuestra terminal tenemos que acceder al archivo php. Tenemos que localizar la ruta donde se sube. Podríamos saberlo con BurpSuite al capturar la petición de subida, o haciendo un poco de research. Concretamente en esta máquina se sube a la siguiente ruta:
Buum! Recibimos la conexión en nuestra terminal.
Como vemos somos el usuario www-data y solo hay 2 usuarios en el sistema:
git
junior
Si intentamos acceder al directorio junior, podemos acceder pero no nos deja leer el user.txt. Lo primero vamos a hacer un tratamiento de la tty para movernos un poco mejor:
Como ya tenemos un password, vamos a intentar lo más sencillo: cambiar al usuario junior
con la contraseña iloveyou1
:
Ya tenemos el user flag! 🏆
Hay un archivo pdf sospechoso en el directorio de junior, pero no podemos leerlo directamente, por lo que nos lo vamos a enviar a nuestro Kali Linux abriendo un servidor con python:
Al abrir este PDF encontramos una contraseña... pero está pixelada!
¿Sabes qué significa esto? ¡Hoy vamos a aprender otra herramienta! Vamos a despixelar este password y obtener acceso root.
Vamos a utilizar una herramienta super popular para despixalizar contraseñas: Depix
:
Si arrastramos la imagen pixelada al explorador de archivos se nos guarda la imagen separada del documento, que es lo que necesitamos para pasárselo a la herramienta:
También podríamos usar alguna herramienta online para extraer imágenes de PDFs como esta:
Ahora nos clonamos el repo y lo tenemos que ejecutar de la siguiente manera:
Ahora si nos abrimos la imagen que nos ha generado vemos que lo ha despixelizado bastante bien y podemos ver la contraseña bastante clara:
Vamos a probarlo cambiando al usuario root y introduciendo esta contraseña:
Ha funcionado y obtenemos la root flag! 🏆
Y no uséis el programa para despixelar las flags, cabrones ;)