Pilgrimage
Last updated
Last updated
Pilgrimage es una máquina Linux de dificultad fácil que presenta una aplicación web con un repositorio Git
expuesto. El análisis del sistema de archivos subyacente y el código fuente revela el uso de una versión vulnerable de ImageMagick
, que se puede utilizar para leer archivos arbitrarios en el objetivo mediante la incorporación de un fragmento tEXT
malicioso en una imagen PNG. La vulnerabilidad se aprovecha para obtener un archivo de base de datos SQLite
que contiene una contraseña de texto sin formato que se puede utilizar para acceder a la máquina mediante SSH. La enumeración de los procesos en ejecución revela un script Bash
ejecutado por root
que llama a una versión vulnerable del binario Binwalk
. Al crear otro PNG malicioso, se aprovecha CVE-2022-4510
para obtener la ejecución remota de código (RCE) como root
.
Iniciamos con la enumeración de puertos de la maquina.
Los puertos abiertos que encontramos son el 22 y 80, teniendo los puertos abiertos procederemos a enumerar las versiones y servicios.
En el puerto 80 encontramos un sitio web para subir una imagen y la almacena en la nube otorgándonos un link.
Al crearnos un usuario podemos almacenar varias imágenes teniendo los links a disposición de nuestro usuario.
Usando diversos diccionarios para enumerar los directorios encontré el directorio .git
y para enumerar los directorio use feroxbuster
.
Luego de obtener dichos archivos:
En uno de ellos podemos encontrar con la ejecución de un binario el cual también tenemos en nuestra maquina atacante.
El binario que se ejecuta es magick
, que ejecutando ./magick --version
podremos ver la versión del binario.
Ejemplo de uso del sploit:
Generaremos nuestra imagen maliciosa que apunta al /etc/passwd
.
Subimos nuestra imagen.
Luego de subir la imagen, descargaremos la imagen que subimos.
Luego de obtener la imagen result.png
, ejecutaremos el siguiente comando:
Luego obtendremos un contenido en hexadecimal el cual con ayuda de python podremos obtener el contenido del /etc/passwd
Luego de ejecutar el comando en python obtenemos el contenido del /etc/passwd
del sistema victima.
Revisando un poco mas el código encontraremos que se llama a una base de datos en la ruta /var/db/pilgrimage
para almacenar el nombre de las imágenes. Entonces ahora será obtener la información de la base de datos.
Luego de cargar la imagen y descargar la imagen, podemos ejecutar el siguiente comando para poder obtener el contenido de manera automática y no como lo hicimos anteriormente.
Vemos que efectivamente contiene la información de la base de datos, que lo guardaremos en un archivo.
Haciendo uso de sqlite3
podremos leer la base de datos.
En la base de datos encontraremos credenciales del usuario emily
Las credenciales que encontramos son validas contra el servicio ssh
Enumerando los procesos con ayuda de pspy64
podemos ver que se ejecuta un script malwarescan.sh
y el usuario que lo ejecuta tiene el uid=0
que es propio del usuario root
Procedemos a ver el script:
Vemos que se ejecuta dentro del script binwalk
Enumerando la versión de binwalk
la versión del binario
Buscando por internet sobre la versión del binario encontraremos que este tiene una vulnerabilidad en donde podemos ejecutar comandos.
El exploit que nos permite ejecutar comando es:
Que lo puedes descargar de github. Luego de descargarlo podemos generar nuestra imagen maliciosa.
Luego de generar obtenemos una imagen con el nombre de binwalk_exploit.png
Ahora para enviar esta imagen a la maquina victima, haremos uso de un servidor en python3
Pero antes de descargar en la maquina victima debemos de ponernos a la escucha con ncat
Descargamos la imagen en la maquina victima
Luego de subir dicha imagen deberíamos de obtener una Shell como el usuario root
.
Teniendo este directorio podemos obtener todos los archivos del .git
con . con el siguiente comando podemos obtener los directorios.
Investigando un poco encontraremos que esta version de este binario tiene una vulnerabilidad el cual permite leer archivos del sistema.