CVE-2016-20084: WordPress Appointment-Booking-Calendar Unauthenticated XSS and Privilege Escalation
WordPress appointment-booking-calendar plugin version 1.1.24 contains a critical security flaw that allows attackers without any login credentials to inject malicious code into the plugin's settings. By crafting specially designed web requests, an attacker can plant persistent malicious scripts that execute whenever administrators access the calendar or view calendar settings. This creates a pathway for attackers to steal admin credentials, perform unauthorized actions, or compromise the entire WordPress installation.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.2 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/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 appointment-booking-calendar 1.1.24 contains multiple privilege escalation vulnerabilities that allow unauthenticated attackers to modify calendar settings and inject persistent cross-site scripting payloads through the admin.php page parameters. Attackers can inject malicious JavaScript into the 'ict' and 'ics' options or the calendar 'name' parameter via GET requests to execute arbitrary scripts when the calendar is displayed or accessed in the administration interface.
3 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2016-20084 is a privilege escalation and persistent cross-site scripting (XSS) vulnerability in appointment-booking-calendar 1.1.24. The vulnerability exists in the admin.php page handler, where calendar configuration parameters ('ict', 'ics', and 'name') are not properly validated or escaped before being stored or rendered. An unauthenticated attacker can inject arbitrary JavaScript through GET request parameters, causing the malicious payload to persist in the plugin's options. The injected scripts execute in the browser context of administrators accessing the plugin interface, bypassing intended authorization checks that should restrict calendar modification to authenticated users.
Business impact
Organizations relying on this plugin face significant operational risk. Compromised calendar data could lead to missed appointments, loss of customer trust, and service disruption. More critically, persistent XSS execution in the admin interface enables attackers to harvest session tokens, administrative credentials, or trigger further exploitation chains targeting WordPress core or other plugins. The lack of authentication requirement means any public-facing WordPress instance using this plugin is vulnerable without additional security hardening.
Affected systems
WordPress installations using appointment-booking-calendar plugin version 1.1.24 are directly affected. Instances exposed to the public internet face immediate risk from unauthenticated exploitation. Sites with additional Web Application Firewall (WAF) protections or security plugins that block malicious query string payloads may reduce but not eliminate risk. The vulnerability is not limited to any specific WordPress environment (self-hosted, managed hosting, etc.)—any deployment running the vulnerable plugin version is susceptible.
Exploitability
This vulnerability has a very high exploitability profile. Attack complexity is low (network-accessible admin.php endpoint), no authentication is required, and exploitation can be performed via simple HTTP GET requests. An attacker needs only to identify a WordPress site using this plugin and craft a malicious URL containing JavaScript payload. Social engineering can amplify impact if attackers trick administrators into clicking a link or redirect traffic. The barrier to entry is minimal, making this a likely target for automated scanning and mass exploitation.
Remediation
Immediately update appointment-booking-calendar to a patched version released after the vulnerability disclosure. Verify the patch version number against the official plugin repository or vendor advisory. As an interim measure, restrict access to wp-admin/ via IP allowlisting or authentication firewall rules to limit exposure. Disable or remove the plugin entirely if updates are not immediately available. Additionally, audit WordPress user accounts and session logs for signs of unauthorized admin access.
Patch guidance
Check the WordPress plugin repository and the vendor's official advisory for the patched version released to address CVE-2016-20084. Verify against vendor guidance before deploying. Ensure automatic plugin updates are enabled in WordPress, or manually update the plugin through the dashboard. Test in a staging environment first to confirm compatibility with your theme and other plugins. After patching, review admin session logs and audit calendar settings for unauthorized modifications.
Detection guidance
Monitor web server logs for GET requests to /wp-admin/admin.php containing encoded JavaScript payloads (watch for 'script', 'onerror', 'onload', '%3C', or similar XSS indicators) targeting calendar configuration parameters. Examine WordPress database options tables for unexpected content in calendar settings—specifically the 'ict', 'ics', and calendar name fields. Use WordPress security plugins to scan for XSS payloads in plugin options. Review admin user session logs for unexpected login times or IP addresses coinciding with unusual calendar modifications.
Why prioritize this
This vulnerability scores 7.2 (HIGH) due to unauthenticated remote exploitation capability, persistence of injected payloads, and potential for lateral movement within the WordPress environment. While it does not cause direct availability impact (CVSS availability score is none), the ability to execute arbitrary code in the admin context creates a bridgehead for further compromise. The combination of network accessibility, zero authentication requirement, and XSS persistence elevates risk significantly in multi-user or enterprise WordPress deployments.
Risk score, explained
CVSS 3.1 score of 7.2 reflects an unauthenticated network attack vector (AV:N), low attack complexity (AC:L), no privilege requirement (PR:N), user interaction not necessary (UI:N), but changed scope to other systems (S:C). The impact assessment shows low confidentiality and integrity impact—attackers can read and modify calendar data and inject malicious scripts affecting other users. Availability is not directly impacted, which prevents a critical or critical-plus rating. However, the scope change and network accessibility keep this firmly in the HIGH severity band, warranting prompt remediation.
Frequently asked questions
Can this vulnerability affect a WordPress site with no users or visitors?
No—exploitation requires the malicious payload to be retrieved and rendered in a browser. However, the attacker needs only to craft a request to the vulnerable parameter. The real risk manifests when an administrator or other user accesses the calendar or admin settings, triggering the injected script execution.
Is this vulnerability still relevant if the plugin hasn't been updated since 2016?
Yes. If your installation is still running version 1.1.24 or an unpatched version, the vulnerability remains exploitable. Check your plugin version in WordPress dashboard under Plugins. If no patch version is available from the vendor, consider removing the plugin or implementing strict access controls on the WordPress admin directory.
What is the difference between this privilege escalation and typical XSS?
This vulnerability combines unauthenticated privilege escalation (unauthorized calendar settings modification) with persistent XSS (injected code stored in the database and re-executed). Normal XSS is often reflected and requires user interaction; this attack persists and triggers automatically when the admin interface is accessed, amplifying impact and attack window.
Do I need to change my WordPress admin password after patching?
If you suspect compromise or have evidence of unauthorized admin access, yes—change all admin passwords, review user accounts for unauthorized creations, and audit session logs. If patching proactively without evidence of breach, password rotation is a best practice but lower priority than applying the patch itself.
This analysis is provided for informational and defensive purposes. SEC.co does not provide or condone exploit code, weaponized proof-of-concept demonstrations, or guidance for offensive use. Organizations should verify all patch version numbers, release dates, and remediation steps directly with official vendor advisories before implementation. Testing should be conducted in non-production environments. Vulnerability landscape and patch availability may change; consult official sources for the most current information. This advisory does not constitute legal advice or guarantee of security outcomes. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2016-20066HIGHWordPress CP Polls 1.0.8 Persistent XSS Vulnerability
- CVE-2023-33999HIGHDOM-Based XSS in WP Mail Log Plugin – Analysis & Remediation
- CVE-2023-54351HIGHStored XSS in WordPress Sonaar Music Plugin 4.7 – Patch & Detection Guide
- CVE-2025-11262HIGHLink Whisper Free Stored XSS Vulnerability – Analysis & Patch Guidance
- CVE-2025-14773HIGHABB T-MAC Plus XSS Vulnerability – HIGH Risk Assessment
- CVE-2025-15654HIGHFox-themes Prague Reflected XSS Vulnerability – CVSS 7.1 (HIGH)
- CVE-2025-52759HIGHReflected XSS in UnboundStudio Accordion FAQ Plugin (Versions ≤2.2.1)
- CVE-2025-67448HIGHNeterbit NW-431F Router SMS Stored XSS Vulnerability (CVSS 7.1)