Pilgrimage

20240722180009.png

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.

Enumeración

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.

Puerto 80

En el puerto 80 encontramos un sitio web para subir una imagen y la almacena en la nube otorgándonos un link.

20240722192319.png

Al crearnos un usuario podemos almacenar varias imágenes teniendo los links a disposición de nuestro usuario.

20240722192422.png

Git-dumper

Usando diversos diccionarios para enumerar los directorios encontré el directorio .git y para enumerar los directorio use feroxbuster.

20240722192514.png

Teniendo este directorio podemos obtener todos los archivos del .git con git dumperarrow-up-right. con el siguiente comando podemos obtener los directorios.

Luego de obtener dichos archivos:

20240722193251.png

En uno de ellos podemos encontrar con la ejecución de un binario el cual también tenemos en nuestra maquina atacante.

20240722213452.png

CVE-2022-44268

El binario que se ejecuta es magick, que ejecutando ./magick --version podremos ver la versión del binario.

20240722213549.png

Investigando un poco encontraremos que esta version de este binario tiene una vulnerabilidad CVE-2022-44268arrow-up-right el cual permite leer archivos del sistema.

Ejemplo de uso del sploit:

Generaremos nuestra imagen maliciosa que apunta al /etc/passwd.

20240722213654.png

Subimos nuestra imagen.

20240722214513.png

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.

20240722214659.png

shell - emily

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.

20240722231256.png

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.

20240722231403.png

En la base de datos encontraremos credenciales del usuario emily

Las credenciales que encontramos son validas contra el servicio ssh

20240722231418.png

Procesos

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

20240722234242.png

Procedemos a ver el script:

Vemos que se ejecuta dentro del script binwalk

shell - root

Enumerando la versión de binwalk la versión del binario

20240722234326.png

Buscando por internet sobre la versión del binario encontraremos que este tiene una vulnerabilidad en donde podemos ejecutar comandos.

CVE-2022-4510

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

20240723002729.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

20240723002852.png

Luego de subir dicha imagen deberíamos de obtener una Shell como el usuario root.

20240723002955.png

Last updated