
Exploit PoC para CVE-2018-11736 que afecta a Pluck CMS en versiones anteriores a 4.7.7-dev2 con una vulnerabilidad de subida de archivos.
Aviso ⚠️: Este exploit fue desarrollado en Rust principalmente como un ejercicio introductorio de aprendizaje de programación. Disculpa cualquier falta de rigor técnico o patrones de código no idiomáticos. Además, este no es un descubrimiento mío; me basé en informes oficiales para escribir este exploit.
PoC del exploit para CVE-2018-11736 que afecta a Pluck CMS en versiones anteriores a 4.7.7-dev2. La vulnerabilidad reside en /data/inc/images.php, que permite a un atacante subir archivos arbitrarios. Al subir un archivo .htaccess malicioso disfrazado con el tipo MIME image/jpeg, es posible forzar al servidor web a interpretar los archivos .jpg como scripts PHP, lo que conduce a la ejecución arbitraria de código PHP.
.htaccess que redefina cómo maneja el servidor los archivos .jpg y una imagen falsa con código PHP. Este repositorio contiene un ejemplo de ambos.Debes tener Cargo instalado para compilar main.rs.
cargo build
También se requiere una cookie de sesión autenticada válida de la instancia de Pluck CMS objetivo:
./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
Para garantizar la reproducibilidad y las pruebas seguras, se puede desplegar una instancia vulnerable de Pluck CMS v4.7.4-dev5 usando Docker. Para desplegarla, necesitas descargar el .zip de la versión vulnerable:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
Después, ejecuta el siguiente comando en el mismo directorio de los archivos de Docker:
docker-compose up -d
La aplicación web estará disponible en http://localhost:8080. Si quieres abrir una TTY dentro del contenedor:
docker exec -it pluck-cms bash
Aquí está el PoC en acción, que demuestra la subida de la configuración maliciosa y el RCE.