Pilgrimage

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.

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

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

Teniendo este directorio podemos obtener todos los archivos del .git con git dumper. con el siguiente comando podemos obtener los directorios.
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.

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

Investigando un poco encontraremos que esta version de este binario tiene una vulnerabilidad CVE-2022-44268 el cual permite leer archivos del sistema.
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.

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.

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

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

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

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

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.

Last updated