Severity by source
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
Unauthenticated attacker (PR:N) exploits a network CSRF but needs admin to click (UI:R); reliable string-literal breakout keeps AC:L, and RCE yields full C/I/A.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
Lifecycle Timeline
2DescriptionCVE.org
The Salon Booking System - Free Version plugin for WordPress is vulnerable to Cross-Site Request Forgery in all versions up to, and including, 10.30.32. This is due to missing or incorrect nonce validation on the setCustomText function. This makes it possible for unauthenticated attackers to inject arbitrary PHP code into the web-accessible translate-constants.php file within the plugin directory, enabling remote code execution on the server via a forged request granted they can trick a site administrator into performing an action such as clicking on a link. sanitize_text_field() is applied to the POST 'value' parameter but does not neutralize the characters - single quotes, parentheses, semicolons, $, and [] - required to break out of the PHP string literal into which the value is interpolated before being written to disk via file_put_contents().
AnalysisAI
Remote code execution in the Salon Booking System - Free Version WordPress plugin (all versions ≤ 10.30.32) lets a remote attacker write attacker-controlled PHP into the plugin's web-accessible translate-constants.php file by abusing the unprotected setCustomText AJAX handler. Because the handler lacks proper nonce validation (CWE-352 CSRF), an unauthenticated attacker who tricks a logged-in administrator into clicking a crafted link can achieve full server-side code execution. Reported by Wordfence with a CVSS of 8.8; there is no public exploit identified at time of analysis and it is not on CISA KEV.
Technical ContextAI
The affected component is a WordPress plugin (cpe:2.3:a:wordpresschef:salon_booking_system_-_free_version) that manages salon appointments and exposes AJAX actions through WordPress's admin-ajax dispatch. The setCustomText action (SetCustomText.php) feeds a POST 'value' into SLN Settings logic that persists translated UI constants by writing a PHP file (translate-constants.php) to disk via file_put_contents(). The root-cause class is CWE-352 Cross-Site Request Forgery: the handler performs a state-changing, file-writing operation without a valid, verified nonce, so any forged request carrying the administrator's ambient session cookies is honored. A secondary weakness compounds it - sanitize_text_field() is applied to 'value' but does not strip the single quotes, parentheses, semicolons, $, and [] characters needed to break out of the PHP single-quoted string literal the value is interpolated into, turning a settings write into arbitrary PHP injection.
RemediationAI
Upstream fix available (changeset 3600791 in the WordPress plugin SVN repository); a released patched version number is not independently confirmed from the provided data, so update to the latest available Salon Booking System - Free Version release above 10.30.32 and verify via the Wordfence advisory (https://www.wordfence.com/threat-intel/vulnerabilities/id/301ad19a-f99c-45c8-83a7-d74e1a260556) that the setCustomText handler now enforces nonce validation. If you cannot upgrade immediately, apply compensating controls: block or restrict web access to the plugin's translate-constants.php file (and ideally the whole plugin directory) at the web server or WAF layer so an injected PHP file cannot be executed - note this may break the plugin's custom-text/translation feature; deploy a WAF rule enforcing referer/nonce checks on the admin-ajax setCustomText action; and instruct administrators to log out of wp-admin when not actively managing the site and avoid clicking untrusted links while authenticated, since the exploit rides an active admin session. Consider temporarily deactivating the plugin on high-value sites until patched.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
Same weakness CWE-352 – Cross-Site Request Forgery (CSRF)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-42784
GHSA-77ww-fvvh-5297