
Scanner PoC sicuro e laboratorio Docker per CVE-2023-27372, un RCE in SPIP CMS precedente alla versione 4.2.1. Verifica la vulnerabilità tramite l'endpoint di recupero password senza azioni distruttive.
Questo repository contiene:
stand/ — ambiente di laboratorio (ambiente vulnerabile) su Docker: SPIP + MariaDB.poc/ — strumento di verifica (scanner) in Python, che implementa una conferma sicura della vulnerabilità (Safe PoC) senza azioni distruttive.Il progetto è destinato alla dimostrazione e all'analisi della vulnerabilità CVE-2023-27372 in SPIP fino alla versione 4.2.1. La verifica viene eseguita tramite la funzionalità di recupero password (endpoint spip.php?page=spip_pass) e viene confermata tramite l'esecuzione di un comando sicuro sul lato dell'ambiente.
.
├── stand/ # Ambiente vulnerabile (SPIP + MariaDB) su Docker Compose
│ ├── docker-compose.yml
│ └── ... (Dockerfile/script dell'ambiente, volumi persistenti, ecc.)
└── poc/ # Safe PoC scanner (Python)
├── Dockerfile
├── README.md # (opzionale) documentazione locale del PoC
└── src/
├── scanner.py
├── utils.py
└── pyproject.toml
cd stand
docker compose up -d
docker compose ps
Il servizio sarà disponibile all'indirizzo:
http://127.0.0.1:8080/http://127.0.0.1:8080/spip.php?page=loginVai in poc/ e costruisci l'immagine Docker dello scanner:
cd ../poc
# Se nel tuo ambiente ci sono problemi di DNS durante la build, usa:
docker build --network=host -t spip-poc-scanner .
Se non ci sono problemi di DNS, puoi usare il comando normale:
docker build -t spip-poc-scanner .
Avvio consigliato per l'ambiente locale:
docker run --rm --network="host" \
-v "$(pwd)":/app/out \
spip-poc-scanner \
-i http://127.0.0.1:8080 \
-o /app/out/results.json
Dopo l'esecuzione apparirà results.json (esempio di struttura):
[
{
"ip": "http://127.0.0.1:8080",
"vuln": true
}
]
Se la tua implementazione del PoC conferma l'esecuzione tramite la creazione di un file (ad esempio /tmp/pwned.txt), puoi verificarlo all'interno del container web.
Variante senza nome rigido del container:
cd ../stand
WEB_CID="$(docker compose ps -q web)"
docker exec "$WEB_CID" ls -l /tmp/pwned.txt
Se il file esiste, conferma la possibilità di eseguire un comando nell'ambiente.
pip)spip.php?page=spip_passTemporary failure in name resolution durante docker buildUsa la build con rete host:
docker build --network=host -t spip-poc-scanner .
Ferma e rimuovi i volumi:
cd stand
docker compose down -v
docker compose up -d
Il progetto è stato creato esclusivamente per uso educativo e test legali nel proprio ambiente di laboratorio. L'autore non si assume alcuna responsabilità per qualsiasi uso non autorizzato.
---::contentReference[oaicite:0]{index=0}