Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRegister subscriber account and own a listing
-
DeliverySubmit AJAX save with malicious business_hours payload
-
ExploitBypass authorship-only nonce check
-
ExecutionStore script in listing page
-
ImpactScript executes in victim/admin browser
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated WordPress account with at least subscriber-level access on a site running GeoDirectory ≤2.8.183, and the attacker must own a listing (post authorship is the only check the AJAX save handler enforces besides a nonce). Exploitation therefore depends on the site permitting user registration and listing creation/ownership by low-privileged users - a common but not universal GeoDirectory configuration. The stored payload executes only when a user subsequently views the injected listing page (delayed, victim-side trigger). Limiting factors: authentication is mandatory (PR:L, no anonymous exploitation), impact is limited to script execution in browser context (C:L/I:L, no availability impact), and sites that restrict listing creation to trusted roles are not practically exploitable by arbitrary users. |
| Impact | This is a genuine but moderate-severity issue, not a top-priority emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N = 6.4) indicates network-reachable, low-complexity exploitation but requires authentication at subscriber level (PR:L) and yields only low confidentiality/integrity impact with a scope change (S:C, reflecting XSS crossing into other users' browser context). The description reinforces this: the flaw is an authorization gap - the AJAX save handler checks only post authorship plus a nonce with no capability check, so any subscriber who owns a listing can inject persistent script. No EPSS score, KEV listing, or public POC is present in the provided data, so exploitation status is 'no public exploit identified at time of analysis.' The Wordfence threat-intel report confirms the vulnerability and its root cause but does not indicate active exploitation. Realistically this is a widespread-plugin stored-XSS that matters for sites accepting untrusted registrations, but the subscriber-ownership precondition and stored (rather than wormable unauthenticated) nature keep real-world urgency in the medium band. Note the S:C scope-change assignment is a defensible but debatable choice typical of Wordfence XSS scoring; no signal conflicts require vendor verification. |
| Exploit ScenarioDerived | On a GeoDirectory site that allows public/subscriber registration and listing ownership, an attacker registers a subscriber account and creates or claims a listing. They then send a crafted AJAX save request setting the 'business_hours' parameter to a malicious script payload, which is stored and later executes in the browser of any visitor or administrator who views the listing page. No public exploit code is identified in the provided data, but the technique is straightforward given the documented missing capability check. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 25, 2026
Stored cross-site scripting in the GeoDirectory WordPress business directory plugin (all versions up to and including 2.8.183) lets any authenticated subscriber-level user who owns a listing inject arbitrary JavaScript through the 'business_hours' parameter, which is then executed in the browser of any user who views the affected listing page. The AJAX save handler enforces only post authorship plus a nonce and performs no capability check or output escaping, so practical exploitability depends on whether the site allows low-privileged users to register and own listings, a common but not universal GeoDirectory configuration. Authentication is mandatory and impact is confined to browser-context script execution (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N), making this a genuine but moderate-severity issue rather than a top-priority emergency; no public exploit code has been identified at time of analysis.
RemediationAI
No patched release version number is independently confirmed in the provided data, but the vendor reference to plugins.trac.wordpress.org changeset 3710682 for the geodirectory repository points to an upstream fix, so administrators should apply the latest GeoDirectory release above 2.8.183 (or the changeset's resulting build) and verify the fix before relying on it - see the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/bc743651-cfbc-487b-9d1b-9aab6d3a57b7?source=cve and the changeset at https://plugins.trac.wordpress.org/changeset?reponame=&old=3710682%40geodirectory&new=3710682%40geodirectory. Where patching must be deferred, the most effective compensating control is to close the prerequisite rather than the payload: disable open user registration and restrict listing creation/ownership to trusted roles (editor, author, or a custom vetted role), which removes the attacker's ability to own a listing and neutralizes the authorship-only authorization check - the trade-off is loss of self-service directory submissions. Restricting or disabling the business hours custom field until patched also removes the injection vector at the cost of that feature's functionality, and sanitizing or escaping the 'business_hours' output via a small site-specific filter/mu-plugin is a viable stopgap but requires code maintenance and can be bypassed if other custom fields share the same weak handler. Finally, a WAF rule blocking script/event-handler payloads in business-hours POST bodies to admin-ajax.php provides defense in depth but should not be treated as a substitute for upgrading, since encoding variations can evade signature-based filtering.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability is a classic CWE-79 improper neutralization of input during web page generation (stored/persistent XSS) in a WordPress plugin. GeoDirectory registers custom fields - including the 'business_hours' field - that are rendered on the front end and persisted through WordPress's admin-ajax.php AJAX entry points. According to the referenced source files (includes/business-hours-functions.php, includes/class-geodir-post-data.php, includes/class-geodir-ajax.php, and includes/custom-fields/input-functions-aui.php at tag 2.8.182), the AJAX save handler for that field validates only that the current user authored the target post and supplies a valid nonce; it never calls current_user_can() with an appropriate capability and never sanitizes the incoming 'business_hours' value on input or escapes it on output. Because WordPress nonces are available to any logged-in account and authorship is self-selectable by a subscriber who created the listing, the authorization boundary collapses to 'any registered user with a listing.' The untrusted string is then stored in postmeta and echoed into listing pages, so the injected markup executes in the session context of every subsequent visitor - including administrators reviewing the listing - with the CVSS S:C scope change reflecting that the script crosses from the plugin's stored data into the broader WordPress page context and could reach privileged sessions.
Know when Wordpress Plugin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
Network-reachable AJAX endpoint (AV:N), low complexity, but requires subscriber authentication owning a listing (PR:L); stored XSS crosses into other users' browsers (S:C) with low C/I and no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The GeoDirectory - WP Business Directory Plugin and Classified Listings Directory plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'business_hours' parameter in all versions up to, and including, 2.8.183 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This is possible because the AJAX save handler validates only post authorship and a nonce with no additional capability check, allowing any subscriber-level user who owns a listing to exploit this vulnerability.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
EUVD-2026-86541
GHSA-qh46-923q-c94x
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB