Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessHarvest public geodir_basic_nonce from frontend
-
DeliverySend crafted AJAX request
-
ExploitManipulate design_type path parameter
-
ExecutionInclude attacker-controlled local .php
-
ImpactExecute arbitrary PHP code
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V5 - File Handling File inclusion prevention, allowlisting
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Command and Control The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation targets the GeoDirectory tags-widget AJAX path (class-geodir-widget-tags.php / template-functions.php) reachable on default installs: the attacker needs only the geodir_basic_nonce, which the plugin localizes into the geodir_params script object on every public frontend page, so no authentication, no user interaction, and no specific site content are required to reach the LFI. The limiting factor is impact escalation, not access: including an existing server-side .php file yields access-control bypass and sensitive-data disclosure immediately, but achieving arbitrary PHP code execution additionally requires an attacker-controllable .php file to already exist or be uploadable on the server. Sites running 2.8.188 or later are not affected (design_type is restricted to a fixed allowlist and template names are validated against traversal/null bytes). |
| Impact | This is a credible real-world priority, though its severity hinges on a secondary condition. The CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H, 8.1 High) marks it network-reachable and unauthenticated (PR:N), with full CIA impact reflecting potential remote code execution (CWE-98, PHP Remote File Inclusion / LFI). The AC:H rating is the key tension point: the description explicitly contradicts the premise that exploitation is hard, stating the required geodir_basic_nonce is 'trivially obtainable by any anonymous visitor' because it is localized to every public frontend page - so the real barrier to AC is NOT the nonce. The more defensible justification for complexity is that full code execution requires an attacker-controllable .php file already present/uploadable on the server; pure inclusion of existing server PHP is more reliable but lower-impact. No EPSS score, KEV listing, or POC was provided in the input, so exploitation likelihood cannot be quantified from the data; status is 'no public exploit identified at time of analysis.' The signals do not conflict on severity - unauthenticated network LFI in a public WordPress plugin is inherently attractive to opportunistic scanning - but defenders should treat the C:H/I:H/A:H (RCE) outcome as conditional on the .php-upload prerequisite, while the information-disclosure / access-control-bypass outcome via inclusion of existing local PHP is immediate. |
| Exploit ScenarioDerived | An unauthenticated attacker loads any public page of a GeoDirectory site, scrapes the geodir_basic_nonce from the localized geodir_params script object, then sends a crafted AJAX request manipulating the 'design_type' parameter to traverse into and include an arbitrary local .php file. If the attacker can first plant a .php payload (e.g., via an upload feature) the inclusion yields remote code execution; otherwise it still enables access-control bypass and disclosure of sensitive local PHP files. No public exploit was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 10, 2026
Local file inclusion in the GeoDirectory - WP Business Directory Plugin and Classified Listings Directory for WordPress (all versions up to and including 2.8.187) allows unauthenticated remote attackers to pass a crafted 'design_type' parameter through the plugin's tags-widget AJAX path and force the server to include attacker-chosen .php files, which the plugin's own geodir_basic_nonce does not meaningfully impede because that nonce is localized into the geodir_params script object on every public frontend page. The immediately attainable impact is access-control bypass and disclosure of sensitive server-side data, while full arbitrary PHP code execution is conditional on an attacker-controllable .php file already existing on the server or being uploadable to it; the independent assessment rates the vector as AV:N/AC:L/PR:N/UI:N with high confidentiality, integrity and availability impact, and no public exploit identified at time of analysis. Versions 2.8.188 and later are not affected because design_type is restricted to a fixed allowlist and template names are validated against directory traversal and null bytes.
RemediationAI
The primary fix is the vendor-released patch: upgrade the GeoDirectory plugin to version 2.8.188 or later, which constrains the tags-widget design_type value to an allowlist and adds geodir_is_safe_template_name() traversal and null-byte validation (commit 2357d640dad7973988742a6706b3a857b6b05d52, detailed in the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/ac817587-1403-46e2-84bf-be5fcadc5425?source=cve). Because WordPress plugins are updated in place through the dashboard or WP-CLI (wp plugin update geodirectory), verifying that the reported version string is 2.8.188 or higher is sufficient confirmation; sites pinned to 2.8.187 by a managed host or custom build should treat the update as urgent rather than optional, since exploitation needs no credentials. If upgrading immediately is impossible, the most effective compensating control is to remove the exposure rather than filter it: deactivate the plugin or, if the directory functionality must remain, disable the GD > Tags widget so the get_tags_loop_content() template path is never invoked, accepting that tag listings disappear from the site as the trade-off. Filtering '..' and null-byte sequences out of the design_type parameter on requests to admin-ajax.php at a WAF or reverse proxy will block the straightforward traversal payloads but is encoding-sensitive and can be bypassed with unusual slash or null representations, so it should be treated as a stopgap. Separately, because escalation from file inclusion to code execution depends on an attacker-influenced .php file existing on the server, hardening the escalation chain helps: configure PHP to refuse execution in upload and cache directories (for example php_admin_flag engine off or an equivalent nginx location rule), which costs nothing functionally but breaks the include-to-execute path, and audit for unexpected .php files in writable directories. Rotating salts and reviewing access logs for anomalous design_type values in AJAX requests is worthwhile after any suspected exposure, given the high confidentiality and integrity impact assigned to this issue.
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 flaw is CWE-98, improper control of a filename used in a PHP include/require statement, in the GeoDirectory WordPress plugin (CPE cpe:2.3:a:paoltaia:geodirectory_-_wp_business_directory_plugin_and_classified_listings_directory:*:*:*:*:*:*:*:*). GeoDirectory renders its tags widget via includes/widgets/class-geodir-widget-tags.php, where the get_tags_loop_content() logic around line 1040 took the user-supplied design_type value and folded it into a template path; that path is then resolved by the include machinery in includes/template-functions.php (geodir_get_template at roughly line 143 and geodir_locate_template at roughly line 199). Because the template name was neither constrained to an expected set nor screened for traversal sequences or null bytes, an attacker-supplied design_type could steer the locate/include step toward an arbitrary .php file on disk, and PHP include of a .php file executes it rather than merely reading it. The access prerequisite is nominal: the plugin localizes geodir_basic_nonce into the geodir_params script object on every public frontend page, so an anonymous visitor can read the nonce from page source, and no authentication, user interaction, or particular site content is needed to reach the vulnerable path. Impact escalation is the real constraint: including a pre-existing server-side .php file (for example a WordPress core or plugin file) immediately yields file-content disclosure and access-control bypass, but turning that into attacker-chosen code execution requires a .php file whose contents the attacker can influence to already reside on the server. The upstream fix in commit 2357d640dad7973988742a6706b3a857b6b05d52 (released in 2.8.188) replaced the open-ended design_type handling with an allowlist (only 'icon-top' is accepted, otherwise the style falls back to 'icon-left'), added a geodir_is_safe_template_name() helper that rejects empty/non-string names, embedded null bytes and any '..' path segment, and hardened geodir_get_template() to bail when $located is falsy.
Know when PHP 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:H/PR:N/UI:N/S:U/C:H/I:H/A:H
Nonce is public and trivially obtained so AC:L and PR:N; network AJAX endpoint gives AV:N; inclusion of local PHP yields full C/I/A impact, with RCE conditional on an uploadable .php file.
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 Local File Inclusion in all versions up to, and including, 2.8.187 via the 'design_type' parameter parameter. This makes it possible for unauthenticated attackers to include and execute arbitrary .php files on the server, allowing the execution of any PHP code in those files. This can be used to bypass access controls, obtain sensitive data, or achieve code execution in cases where .php file types can be uploaded and included. The required nonce is trivially obtainable by any anonymous visitor, as the geodir_basic_nonce value is localized to every public frontend page via the geodir_params script object, meaning no authentication, user interaction, or specific site content is required to exploit this vulnerability.
Executive ViewAI
WordPress sites running the GeoDirectory business directory and classified listings plugin at versions 2.8.187 and earlier expose an unauthenticated file-inclusion weakness that lets anyone on the internet force the server to load attacker-chosen files, yielding unauthorized access to sensitive server-side data and, in some configurations, full server takeover. Because the plugin powers public-facing directory and listing pages on customer-facing sites, every un-remediated installation is reachable without credentials and requires no user interaction. Leadership should treat this as a near-term operational and data-protection risk until all affected instances are inventoried and moved off the vulnerable release.
No vendor-released patch was identified at time of analysis, so interim mitigations should be applied: block or filter requests passing a crafted design_type parameter to the plugin's tags-widget AJAX endpoint at the WAF or reverse proxy; temporarily deactivate the GeoDirectory plugin on sites where directory functionality can be paused; restrict public reachability of the affected AJAX path; disable PHP execution in uploads, cache, and other writable directories to prevent escalation to code execution; and monitor logs for file-inclusion and path-traversal indicators until version 2.8.188 or later can be deployed.
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
Local File Inclusion vulnerabilities occur when an application accepts user-controlled input to specify which file should be loaded or executed, typically through functions like PHP's `include()`, `require()`, or `fopen()`.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
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
EUVD-2026-96104
GHSA-968m-4g5g-c538
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB