
Exploit de prueba de concepto para CVE-2024-23724 en Ghost CMS, que demuestra escalada de privilegios mediante la carga de una imagen de perfil SVG maliciosa.
Para probar la vulnerabilidad, necesitamos dos cuentas: una cuenta con el rol de administrador (propietario) y una cuenta con el rol de contribuidor. En Ghost CMS, primero hay que acceder al panel de administración para crear la cuenta de propietario, y luego, desde esa cuenta, invitar a un contribuidor para que cree su propia cuenta. Sin embargo, en Ghost, la única forma de invitar a un contribuidor es enviando un enlace de invitación por correo electrónico, lo que requiere un servicio de entrega de correos para enviar el mensaje a la cuenta del contribuidor. Para facilitar las cosas, hemos creado una cuenta de Mailgun, añadido un contribuidor a Ghost y luego creado un archivo de volcado de la base de datos en el estado en que lo teníamos. En nuestra configuración de Docker Compose, primero restauramos la base de datos a partir del volcado antes de iniciar Ghost, de modo que no necesite un servicio de entrega de correos para probar esta vulnerabilidad. Sin embargo, si desea comenzar con una instalación limpia y no usar el volcado de base de datos proporcionado, puede usar el Docker Compose en la carpeta manual-setup para iniciar una instalación limpia de Ghost. A continuación, encontrará los pasos para configurar Mailgun (un servicio de entrega de correos que usamos) y hacerlo funcionar con Ghost.
Para esta instalación, estas son las credenciales de administrador y contribuidor que debe usar para iniciar sesión:
Para empezar, debe crear una cuenta de Mailgun. Una vez creada su cuenta, obtenga sus credenciales SMTP. Después de obtener sus credenciales, colóquelas en el archivo config.development.json siguiendo el mismo formato que se muestra en el archivo config.example.json.
Aquí tiene una guía paso a paso:
config.example.json y renómbrelo como config.development.json.config.development.json. Esto garantizará que su entorno de desarrollo esté configurado correctamente para enviar correos electrónicos a través de Mailgun.Puede iniciar la instalación que haya elegido usando el siguiente comando:
docker-compose up
Para probar el ataque, siga estos pasos:
python generate-malicious-svg.py -u [USERNAME] -p [PASSWORD] -t http://localhost
Para la instalación automática, el comando es:
python generate-malicious-svg.py -u [email protected] -p ZtXfMq2FaRHGm@! -t http://localhost
Este comando genera un archivo SVG malicioso llamado tenant-takeover.svg en el directorio actual.
Conéctese a la interfaz de administración de Ghost usando las credenciales de la cuenta de contribuidor que haya creado. Para ello, visite http://localhost:3001/ghost e inicie sesión con las credenciales de la cuenta de contribuidor.
Acceda a la página de modificación de su perfil haciendo clic en su foto de perfil en la parte inferior izquierda de la pantalla y luego en el botón "Your profile".
Haga clic en el icono de perfil para cambiar su foto de perfil. Seleccione el archivo SVG malicioso que generó en el paso 1.
Guarde los cambios haciendo clic en el botón "Save & close". Puede refrescar la página para verificar que la foto de perfil se haya cambiado.
Ahora puede cerrar sesión de la cuenta de contribuidor e iniciar sesión en la cuenta de administrador. En http://localhost:3001/ghost/#/settings/staff?tab=contributors, puede ver que la foto de perfil del contribuidor ha cambiado. Si hace clic derecho sobre la foto de perfil y abre la imagen en una nueva pestaña, se desencadenará el ataque. Ahora puede volver a http://localhost:3001/ghost/#/settings/staff y verá que el contribuidor ahora es propietario del blog y usted se ha convertido en administrador.
Hemos realizado un video que describe en detalle todo el proceso y los pasos necesarios para implementar la CVE. Este video sirve como guía visual para comprender mejor nuestro enfoque y las acciones realizadas.
Enlace al video: Haga clic aquí para ver el video
No dude en consultar este video para obtener una visión completa del proyecto y de los pasos técnicos seguidos.