Skip to main content

GeoDirectory EUVDEUVD-2026-96104

| CVE-2026-104899 HIGH
PHP Remote File Inclusion (CWE-98)
2026-10-10 Wordfence GHSA-968m-4g5g-c538
8.1
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Harvest public geodir_basic_nonce from frontend
  2. Delivery
    Send crafted AJAX request
  3. Exploit
    Manipulate design_type path parameter
  4. Execution
    Include attacker-controlled local .php
  5. Impact
    Execute 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

GeoDirectory – WP Business Directory Plugin and Classified Listings Directory 0 ≤2.8.187

Affected Packages

euvd geodirectory_wp_business_directory_plugin_and_classified_listings_directory no fix

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

Vendor (Wordfence) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 9.8 CRITICAL

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.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.6%
Top 51% exploitable
Prevalence
Medium
popular but niche WordPress business-directory plugin, moderate install base
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

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

CVE-2012-1823 CRITICAL POC
9.8 May 11

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

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

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

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

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

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy