
Scanner PoC sécurisé et laboratoire Docker pour CVE-2023-27372, une exécution de code à distance (RCE) dans SPIP CMS antérieur à 4.2.1. Vérifie la vulnérabilité via le point de terminaison de récupération de mot de passe sans actions destructrices.
Ce dépôt contient :
stand/ — environnement de laboratoire (environnement vulnérable) sur Docker : SPIP + MariaDB.poc/ — outil de vérification (scanner) en Python, implémentant une confirmation sécurisée de la vulnérabilité (Safe PoC) sans actions destructrices.Le projet est destiné à démontrer et analyser la vulnérabilité CVE-2023-27372 dans SPIP jusqu'à la version 4.2.1. La vérification est effectuée via la fonctionnalité de réinitialisation de mot de passe (endpoint spip.php?page=spip_pass) et confirmée par l'exécution d'une commande sécurisée du côté de l'environnement.
.
├── stand/ # Environnement vulnérable (SPIP + MariaDB) sur Docker Compose
│ ├── docker-compose.yml
│ └── ... (Dockerfile/scripts de l'environnement, persist volumes, etc.)
└── poc/ # Scanner Safe PoC (Python)
├── Dockerfile
├── README.md # (optionnel) documentation locale du PoC
└── src/
├── scanner.py
├── utils.py
└── pyproject.toml
cd stand
docker compose up -d
docker compose ps
Le service sera accessible à l'adresse :
http://127.0.0.1:8080/http://127.0.0.1:8080/spip.php?page=loginAllez dans poc/ et construisez l'image Docker du scanner :
cd ../poc
# Si vous rencontrez des problèmes de DNS lors de la construction, utilisez :
docker build --network=host -t spip-poc-scanner .
S'il n'y a pas de problème DNS, vous pouvez utiliser la commande normale :
docker build -t spip-poc-scanner .
Lancement recommandé pour l'environnement local :
docker run --rm --network="host" \
-v "$(pwd)":/app/out \
spip-poc-scanner \
-i http://127.0.0.1:8080 \
-o /app/out/results.json
Après exécution, un fichier results.json sera créé (exemple de structure) :
[
{
"ip": "http://127.0.0.1:8080",
"vuln": true
}
]
Si votre implémentation du PoC confirme l'exécution via la création d'un fichier (par exemple /tmp/pwned.txt), vous pouvez le vérifier à l'intérieur du conteneur web.
Option sans nom de conteneur fixe :
cd ../stand
WEB_CID="$(docker compose ps -q web)"
docker exec "$WEB_CID" ls -l /tmp/pwned.txt
Si le fichier existe, cela confirme la possibilité d'exécuter une commande dans l'environnement.
pip)spip.php?page=spip_passTemporary failure in name resolution lors de docker buildUtilisez la construction avec le réseau de l'hôte :
docker build --network=host -t spip-poc-scanner .
Arrêter et supprimer les volumes :
cd stand
docker compose down -v
docker compose up -d
Ce projet a été créé exclusivement à des fins éducatives et pour des tests légitimes dans votre propre environnement de laboratoire. L'auteur décline toute responsabilité en cas d'utilisation non autorisée.
---::contentReference[oaicite:0]{index=0}