
Exploit PoC per CVE-2018-11736 che colpisce Pluck CMS nelle versioni precedenti alla 4.7.7-dev2 con una vulnerabilità di upload di file.
Disclaimer ⚠️: Questo exploit è stato sviluppato in Rust principalmente come esercizio introduttivo di apprendimento della programmazione. Vi prego di scusare l'eventuale mancanza di rigore tecnico o pattern di codice non idiomatici. Inoltre, non si tratta di una mia scoperta; mi sono affidato a report ufficiali per scrivere questo exploit.
Exploit PoC per CVE-2018-11736 che colpisce le versioni di Pluck CMS precedenti alla 4.7.7-dev2. La vulnerabilità risiede in /data/inc/images.php, che consente a un attaccante di caricare file arbitrari. Caricando un file .htaccess malizioso camuffato con il tipo MIME image/jpeg, è possibile indurre il server web a interpretare i file .jpg come script PHP, portando all'esecuzione di codice PHP arbitrario.
È necessario avere Cargo installato per compilare main.rs.
cargo build
È inoltre necessario un cookie di sessione autenticato valido dell'istanza Pluck CMS target:
./CVE-2018-11736 -h
CVE-2018-11736 exploit. Uploads a malicious .htaccess to force the web server to interpret .jpg files as PHP scripts, leading to Remote Code Execution (RCE)
Usage: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
Options:
-c, --cookie <COOKIE> Session Cookie (Once you have logged in succesfully). Format: xxxxxxxxxxxx
-u, --base-url <BASE_URL> Base URL (e.g. http://localhost)
-H, --hta-path <HTACCESS> Path to the .htaccess file
-i, --image-path <IMAGE> Path to the fake image file
-h, --help Print help
-V, --version Print version
Per garantire riproducibilità e test sicuri, è possibile distribuire un'istanza vulnerabile di Pluck CMS v4.7.4-dev5 usando Docker. Per distribuirla, devi scaricare il .zip della versione vulnerabile:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
Quindi, esegui il comando seguente nella stessa directory dei file docker:
docker-compose up -d
L'applicazione web sarà disponibile all'indirizzo http://localhost:8080. Se vuoi aprire una TTY all'interno del container:
docker exec -it pluck-cms bash
Ecco il PoC in azione, che dimostra il caricamento della configurazione maliziosa e la RCE.