
Script proof-of-concept e laboratorio Docker per riprodurre CVE-2023-41892, una vulnerabilità di esecuzione remota di codice pre-autenticata in Craft CMS. Include exploit di log poisoning e scrittura di file MSL di Imagick.
Questa repository contiene script proof-of-concept e un lab locale Vulhub per riprodurre CVE-2023-41892, una vulnerabilità di esecuzione remota di codice che non richiede autenticazione in Craft CMS.
Usa questo progetto solo in un lab locale autorizzato o su altri sistemi per cui disponi di esplicito permesso di test.
CVE-2323-41892_PoC/
+-- README.md
+-- LFI_to_RCE.py
+-- Imagick_PoC.py
+-- Vulnhub_env/
+-- docker-compose.yml
+-- README.md
+-- README.zh-cn.md
+-- 1.png ... 5.png
| Percorso | Scopo |
|---|---|
LFI_to_RCE.py | PoC per il log poisoning seguito da inclusione locale di file tramite il gadget Psy\Configuration. |
Imagick_PoC.py | PoC per la scrittura arbitraria di file tramite il gadget Imagick MSL. |
Vulnhub_env/docker-compose.yml | Lab Docker Compose che avvia Craft CMS 4.4.14 vulnerabile e MySQL 5.7. |
Vulnhub_env/README.md | Note di riproduzione in stile Vulhub originale con esempi di richieste e screenshot. |
Vulnhub_env/README.zh-cn.md | Versione cinese delle note di riproduzione Vulhub. |
Vulnhub_env/*.png | Screenshot utilizzati dalla documentazione dell'ambiente Vulhub. |
CVE-2023-41892 interessa le versioni di Craft CMS dalla 4.0.0-RC1 alla 4.4.14. Il problema è stato corretto in Craft CMS 4.4.15.
L'endpoint vulnerabile usato da entrambi gli script è:
/index.php?action=conditions/render
I PoC hanno come obiettivo l'URL predefinito del lab locale:
http://localhost:8088
Se il tuo lab è in esecuzione su un altro host o porta, aggiorna il valore URL vicino all'inizio di LFI_to_RCE.py e Imagick_PoC.py.
requestsInstalla la dipendenza Python:
pip install requests
Avvia l'ambiente Craft CMS vulnerabile:
cd Vulnhub_env
docker compose up -d
Apri il programma di installazione di Craft CMS:
http://localhost:8088/admin/install
Usa le seguenti impostazioni predefinite del database durante l'installazione:
| Impostazione | Valore |
|---|---|
| Host database | db |
| Nome database | craftcms |
| Utente database | root |
Dopo l'installazione, verifica che il sito sia raggiungibile all'indirizzo:
http://localhost:8088
Esegui i comandi dalla radice della repository:
cd CVE-2323-41892_PoC
Esegui:
python LFI_to_RCE.py
Cosa fa:
Invia JSON malformato contenente codice PHP al log di Craft CMS.
Costruisce un percorso del file di log usando la data locale corrente:
../storage/logs/web-YYYY-MM-DD.log
Usa craft\elements\conditions\users\UserCondition con \Psy\Configuration per includere il file di log avvelenato.
Controlla se l'output di phpinfo() appare nella risposta.
Output previsto in caso di successo:
[*] Starting Log Poisoning...
[+] Payload sent successfully!
[*] Starting LFI to RCE...
[+] phpinfo() executed successfully!
Esegui:
python Imagick_PoC.py
Cosa fa:
Imagick.webshell.php nella web root.http://localhost:8088/webshell.php e controlla la presenza di phpinfo().Output previsto in caso di successo:
[*] Sending multipart/form-data payload to trigger Imagick gadget...
[+] Success: phpinfo() output found.
La procedura Imagick può causare il crash del worker PHP dopo l'attivazione del payload. Nel lab Vulhub questo può comunque essere normale se webshell.php viene scritto prima del crash.
Entrambi gli script definiscono l'URL di destinazione all'inizio del file:
URL = "http://localhost:8088"
Modifica questo valore se il lab vulnerabile è esposto su un altro indirizzo.
Imagick_PoC.py verifica il file generato in:
OUTPUT_FILE = "/webshell.php"
Verifica che i container siano in esecuzione:
cd Vulnhub_env
docker compose ps
Verifica che il sito sia raggiungibile all'indirizzo http://localhost:8088.
Controlla se un altro servizio sta già usando la porta 8088.
Aggiorna il valore URL negli script Python se hai cambiato la porta esposta.
LFI_to_RCE.py non mostra PHP Versionstorage/logs/.web-YYYY-MM-DD.log generato in LFI_to_RCE.py.Imagick_PoC.py restituisce 404 per /webshell.php/tmp/php*.Arresta il lab:
cd Vulnhub_env
docker compose down
Rimuovi i container e il volume del database se vuoi una reinstallazione pulita:
docker compose down -v
Aggiorna Craft CMS alla versione 4.4.15 o successiva.
Se si sospetta uno sfruttamento della vulnerabilità, ruota la chiave di sicurezza di Craft CMS, le credenziali del database, i segreti dell'applicazione e qualsiasi credenziale memorizzata nell'ambiente.
| Password database |
root |