CVE-2016-20070: Privilege Escalation & Stored XSS in WordPress Booking Calendar Contact Form 1.0.23
WordPress Booking Calendar Contact Form version 1.0.23 has two related security weaknesses that let attackers with basic subscriber accounts escalate their privileges and inject malicious code. An attacker can manipulate plugin settings and inject JavaScript that runs in administrator browsers, potentially compromising site integrity and administrative sessions. The plugin fails to properly check whether a user should have access to these sensitive functions and doesn't clean input before storing or displaying it.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.4 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-79
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-15 / 2026-06-17
NVD description (verbatim)
WordPress Booking Calendar Contact Form 1.0.23 contains privilege escalation and stored cross-site scripting vulnerabilities that allow authenticated users to modify plugin options and inject malicious scripts by failing to verify user privileges and sanitize input parameters. Attackers with subscriber-level accounts can inject XSS payloads through parameters like price, name, calendar_language, and email_confirmation_to_user via admin-ajax.php and admin.php endpoints to execute arbitrary JavaScript in administrator browsers.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2016-20070 involves privilege escalation and stored XSS in Booking Calendar Contact Form 1.0.23. The vulnerability stems from insufficient authorization checks and input sanitization on admin-ajax.php and admin.php endpoints. Authenticated subscribers can inject XSS payloads through parameters including price, name, calendar_language, and email_confirmation_to_user. The stored nature means payloads persist and execute whenever administrators access affected pages, enabling session hijacking, credential theft, or further site compromise.
Business impact
A compromised WordPress site running this plugin risks administrative account takeover, data theft, and potential site defacement. Malicious JavaScript running in administrator browsers can harvest login tokens, modify site content, install backdoors, or exfiltrate sensitive booking and customer data. For businesses using the plugin to manage appointments or event registrations, this creates reputational risk and potential compliance violations if customer information is exposed.
Affected systems
WordPress installations running Booking Calendar Contact Form version 1.0.23 are directly affected. Any site with this plugin version active and users holding subscriber-level or higher roles can be exploited. The vulnerability requires authentication, so it does not affect sites where user registration is disabled, though subscriber accounts created for customers or partners represent a practical attack vector.
Exploitability
The attack requires valid WordPress credentials at subscriber level or above—a low barrier since many sites permit customer registration or have test accounts. No special tools or complex techniques are needed; the attacker simply sends crafted requests to the vulnerable endpoints. The stored XSS component means the payload executes automatically when administrators log in, making it reliable and difficult to detect without log analysis. No user interaction beyond normal administrator actions is required for the attack to succeed.
Remediation
Immediately disable or remove Booking Calendar Contact Form 1.0.23 from production environments. Verify whether a patched version exists by consulting the plugin's official repository and security advisories from the vendor. If updates are available, apply them after testing in a staging environment. Audit recent administrator activity logs for signs of compromise, including unexpected plugin installations, user account creation, or option modifications.
Patch guidance
Check the WordPress plugin repository and vendor security communications for version 1.0.24 or later. The publisher should issue a patch that validates user capabilities before processing settings changes and sanitizes all user-supplied input before storage. Until a verified patch is available and tested, consider replacing the plugin with an alternative booking solution that maintains current security practices.
Detection guidance
Monitor for POST requests to admin-ajax.php and admin.php containing suspicious parameter values, especially those with HTML or JavaScript syntax in price, name, calendar_language, or email_confirmation_to_user fields. Log and alert on changes to plugin options originating from subscriber accounts. Review stored plugin configuration and option tables for encoded or obfuscated scripts. Search administrator browser console activity for execution of unexpected JavaScript originating from the plugin.
Why prioritize this
Although marked MEDIUM severity due to the requirement for prior authentication, this vulnerability poses significant risk because subscriber accounts are often created liberally on public-facing sites. The combination of privilege escalation and stored XSS creates a reliable path to administrative compromise. Organizations should prioritize patching or replacing this plugin promptly, especially if subscriber registration is enabled or if the site processes sensitive booking or payment data.
Risk score, explained
The CVSS 3.1 score of 6.4 reflects that the attack requires authentication (PR:L) but has network access, low complexity, and impacts confidentiality and integrity across trust boundaries (S:C). The lack of availability impact and requirement for authenticated access prevent a higher score, but the combination of privilege escalation and stored XSS and the typical accessibility of subscriber accounts in production WordPress sites warrants urgent remediation.
Frequently asked questions
Can this vulnerability be exploited if my WordPress site doesn't allow public registration?
The core vulnerability remains present in version 1.0.23, but the attack surface shrinks if you don't create subscriber accounts. However, many organizations create test accounts, staff guest accounts, or client accounts at subscriber level. Review your actual user roster; if any non-administrative users exist, assume the risk applies.
What's the difference between this privilege escalation and a typical stored XSS attack?
Privilege escalation means the attacker gains access to functions normally restricted to administrators. The stored XSS is the method: by injecting scripts through plugin parameters, the attacker ensures those scripts execute in the administrator's session, effectively using admin privileges to do damage. Together they're more dangerous than XSS alone.
Do I need to remove this plugin immediately, or can I disable it and patch later?
Disabling the plugin removes the immediate attack surface, but a patched version is preferable if available. Check the vendor's advisory for patch status; if one exists and is tested, apply it. If no patch emerges after reasonable time, replace the plugin to maintain functionality without risk.
How can I tell if my site was already compromised by this vulnerability?
Look for unexpected administrator accounts or users created after the plugin was installed. Check for unusual plugin installations, modified WordPress options, or JavaScript in plugin configuration tables. Enable WordPress security logging and review recent activity. If you discover signs of compromise, consider a professional security audit before assuming the site is clean.
This analysis is provided for informational purposes. SEC.co does not verify vendor patch availability or version numbers; consult the official plugin repository and vendor advisories for authoritative patch guidance. Patch testing in a staging environment is strongly recommended before production deployment. If you believe your site was compromised, engage qualified incident response professionals. Timelines and remediation advice assume standard WordPress configurations; custom deployments may require tailored assessment. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2018-25384MEDIUMStored XSS in Wikidforum 2.20 Allows Authenticated Attackers to Inject Malicious Scripts
- CVE-2019-25731MEDIUMStored XSS in Zuz Music 2.1 Contact Form
- CVE-2019-25737MEDIUMStored XSS in Live Chat Unlimited 2.8.3 – Admin Session Compromise
- CVE-2019-25739MEDIUMGigToDo 1.3 Stored XSS Vulnerability in Proposal Descriptions
- CVE-2019-25742MEDIUMStored XSS in Zoner Real Estate WordPress Theme 4.1.1 – Admin Account Compromise Risk
- CVE-2019-25743MEDIUMWordPress Soliloquy Lite 2.5.6 Stored XSS Vulnerability
- CVE-2019-25744MEDIUMWordPress Popup Builder 3.49 Stored XSS Vulnerability – Exploit Prevention & Patch Guide
- CVE-2021-47982MEDIUMWP-Paginate 2.1.3 Stored XSS in Plugin Settings