PilotPress Plugin for WordPress Privilege Escalation via Account Takeover
The PilotPress WordPress plugin (<= 2.0.43) contains a logic flaw in the update_cc_details() AJAX handler that allows an authenticated attacker to trigger an administrative account takeover.
CVE search metadata
CVE search record: CVE-2026-85659. Severity: high. CVSS: 8.8. KEV: no. Product: PilotPress (<= 2.0.43). Brief: PilotPress Plugin for WordPress Privilege Escalation via Account Takeover. Brief link: https://feed.craftedsignal.io/briefs/2026-10-pilotpress-privilege-escalation/
The PilotPress plugin for WordPress, in versions up to and including 2.0.43, is vulnerable to a privilege escalation attack that leads to full administrative account takeover. The flaw exists within the update_cc_details() AJAX handler. When an attacker-supplied username is submitted, the plugin forwards the request to the ONTRAPORT service via an API call before verifying if the username already exists locally within the WordPress database. If a collision is detected, the plugin fails to roll back the remote change on the ONTRAPORT service, resulting in a misaligned state where the remote contact is linked to an existing WordPress administrator account. This vulnerability allows an authenticated attacker with at least Subscriber-level access to synchronize their own password with an administrator account, ultimately resulting in the issuance of an administrative authentication cookie by the WordPress core.
Attack Chain
- Attacker authenticates to the target WordPress site with a valid Subscriber-level account and obtains a valid Customer Center nonce.
- Attacker invokes the
update_cc_details()AJAX handler, providing ausernameparameter that matches an existing WordPress Administrator login. - The plugin executes
api_call('update_cc_details', ...)to the ONTRAPORT service, successfully renaming the remote contact. - The plugin subsequently identifies a local collision via
username_exists()but fails to revert the change made in step 3. - Attacker attempts to log in using the targeted Administrator's username and the attacker's own password.
- The
user_login()hook triggerswp_authenticate, validating credentials against ONTRAPORT. - The system retrieves the local administrator's user row via
get_user_by('login', $username). wp_set_password()is executed against the Administrator's user ID, granting the attacker a full administrative session.
Impact
Successful exploitation of CVE-2026-85659 allows an attacker with low-privileged access (e.g., Subscriber) to escalate privileges to Administrator. This grants the attacker full control over the WordPress instance, including the ability to install malicious plugins, modify content, extract sensitive database information, or execute arbitrary code on the server, potentially leading to a full system compromise.
Recommendation
- Immediately update the PilotPress plugin to the latest version, ensuring the installation is patched beyond version 2.0.43.
- Audit WordPress user activity logs for suspicious account modifications or unexpected changes in administrator-level access.
- Review administrative user accounts for recent password changes that do not correspond with known authorized administrative actions.
Immediate actions
Upgrade PilotPress plugin to the version after 2.0.43
Threat Hunt
Monitor web application logs for unusual POST requests to the update_cc_details AJAX handler
Data: Web server access logs
Mitigations
Upgrade PilotPress plugin
CVE-2026-85659