CVE-2026-85659 PUBLISHED

PilotPress <= 2.0.43 - Authenticated (Subscriber+) Privilege Escalation via Account Takeover via 'username' Parameter

Assigner: Wordfence
Reserved: 04.09.2026 Published: 16.10.2026 Updated: 16.10.2026

The PilotPress plugin for WordPress is vulnerable to Privilege Escalation via Account Takeover in all versions up to, and including, 2.0.43. The vulnerability exists because the update_cc_details() AJAX handler forwards an attacker-supplied username parameter to ONTRAPORT via api_call('update_cc_details', ...) before performing the local username_exists() collision check, and aborts without rolling back the remote rename when a collision is detected — leaving the remote ONTRAPORT contact renamed to an existing WordPress Administrator's login. On a subsequent login attempt, user_login() (hooked to wp_authenticate) authenticates against ONTRAPORT using the renamed login and the attacker's own password, resolves the local WordPress user row via get_user_by('login', $username) — which now selects the real Administrator's row — and calls wp_set_password() against that Administrator's user ID; because the user_level != 10 guard only suppresses PilotPress's own cookie issuance rather than returning a WP_Error to core, WordPress proceeds to validate the newly-synchronized password and issues a full Administrator authentication cookie to the attacker. This makes it possible for authenticated attackers with Subscriber-level access and above — specifically any PilotPress member holding a valid ONTRAPORT contact and the Customer Center nonce — to fully take over an Administrator account.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 8.8

Product Status

Vendor ontraport
Product PilotPress
Versions Default: unaffected
  • affected from 0 to 2.0.43 (incl.)

Credits

  • Supakiad S. (m3ez) finder

References

Problem Types

  • CWE-269 Improper Privilege Management CWE