/

CVE-2026-96667

Severity:

HIGH RISK

(7.2)

Stored XSS (CWE-79) in WordPress Real Estate Manager

CVE-2026-96667

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Arbitrary script execution in users' browsers, potentially affecting sessions, account data, and administrative actions

Severity:

HIGH RISK

(7.2)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

The Real Estate Manager – Property Listing and Agent Management plugin for WordPress contains a stored cross-site scripting vulnerability in the first_name parameter because input is not sufficiently sanitized and output is not properly escaped. An unauthenticated attacker may inject scripts that execute in the browser of anyone who views the affected page, and the CAPTCHA control may be bypassed by omitting its response parameter.

The Real Estate Manager – Property Listing and Agent Management plugin for WordPress contains a stored cross-site scripting vulnerability in the first_name parameter because input is not sufficiently sanitized and output is not properly escaped. An unauthenticated attacker may inject scripts that execute in the browser of anyone who views the affected page, and the CAPTCHA control may be bypassed by omitting its response parameter.

Affected context

The issue occurs in WordPress sites using the Real Estate Manager – Property Listing and Agent Management plugin through version 7.3, where the first_name value can be stored and later rendered in a page without adequate output encoding. Exposure is increased when unauthenticated submissions are accepted and CAPTCHA validation is conditional on the presence of the g-recaptcha-response parameter.

The issue occurs in WordPress sites using the Real Estate Manager – Property Listing and Agent Management plugin through version 7.3, where the first_name value can be stored and later rendered in a page without adequate output encoding. Exposure is increased when unauthenticated submissions are accepted and CAPTCHA validation is conditional on the presence of the g-recaptcha-response parameter.

Exploit preconditions

  • Attack surface: Public-facing WordPress plugin functionality that accepts or processes the first_name parameter
  • Required access: No authenticated account may be required if the relevant submission path is publicly accessible
  • Trigger point: A stored value is later rendered in a page viewed by another user
  • Why exploitation is possible: Insufficient input handling and output escaping allow browser-interpreted script content to persist, while CAPTCHA validation is skipped when its response parameter is omitted
  • Attack surface: Public-facing WordPress plugin functionality that accepts or processes the first_name parameter
  • Required access: No authenticated account may be required if the relevant submission path is publicly accessible
  • Trigger point: A stored value is later rendered in a page viewed by another user
  • Why exploitation is possible: Insufficient input handling and output escaping allow browser-interpreted script content to persist, while CAPTCHA validation is skipped when its response parameter is omitted

Why this happens

The underlying bug is a failure to treat user-controlled data as untrusted at both storage and rendering boundaries. The plugin does not apply sufficient context-appropriate sanitization and output encoding to the first_name value, allowing stored script content to be interpreted by a victim's browser. This maps to CWE-79, Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

The underlying bug is a failure to treat user-controlled data as untrusted at both storage and rendering boundaries. The plugin does not apply sufficient context-appropriate sanitization and output encoding to the first_name value, allowing stored script content to be interpreted by a victim's browser. This maps to CWE-79, Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

Potential impact

  • An attacker may execute arbitrary JavaScript in a victim's browser
  • User sessions or sensitive page data could be exposed
  • Administrative actions could be performed in a victim's security context
  • Phishing content or deceptive page modifications could be displayed
  • Site integrity and user trust could be affected
  • An attacker may execute arbitrary JavaScript in a victim's browser
  • User sessions or sensitive page data could be exposed
  • Administrative actions could be performed in a victim's security context
  • Phishing content or deceptive page modifications could be displayed
  • Site integrity and user trust could be affected

General mitigation guidance

Mitigation generally focuses on reducing trust in submitted values and

ensuring context-appropriate output encoding.

Common defensive patterns include:

  • Validate and constrain name fields using an allowlist appropriate to the expected data
  • Apply context-aware output escaping at every HTML, attribute, URL, or script rendering boundary
  • Use framework-provided sanitization and escaping APIs rather than assembling markup manually
  • Ensure CAPTCHA and authorization checks are enforced independently of optional request parameters
  • Limit unauthenticated write access and apply least privilege to plugin and WordPress roles
  • Use a restrictive content security policy as a defense-in-depth control

Mitigation generally focuses on reducing trust in submitted values and

ensuring context-appropriate output encoding.

Common defensive patterns include:

  • Validate and constrain name fields using an allowlist appropriate to the expected data
  • Apply context-aware output escaping at every HTML, attribute, URL, or script rendering boundary
  • Use framework-provided sanitization and escaping APIs rather than assembling markup manually
  • Ensure CAPTCHA and authorization checks are enforced independently of optional request parameters
  • Limit unauthenticated write access and apply least privilege to plugin and WordPress roles
  • Use a restrictive content security policy as a defense-in-depth control

How teams detect issues like this

Organizations can look for this weakness through:

  • Static analysis rules identifying user-controlled values rendered without context-sensitive escaping
  • Code review checks for stored fields that flow from request parameters into HTML output
  • Tests that submit harmless marker strings containing encoding-sensitive characters and verify safe rendering
  • Request-policy checks ensuring anti-automation controls cannot be skipped by omitting optional parameters
  • Web application monitoring for unexpected script-like content in property or agent records

Automated security scanning and code review tools may help identify unsafe data flows, but findings should be validated in the application's rendering context.

Organizations can look for this weakness through:

  • Static analysis rules identifying user-controlled values rendered without context-sensitive escaping
  • Code review checks for stored fields that flow from request parameters into HTML output
  • Tests that submit harmless marker strings containing encoding-sensitive characters and verify safe rendering
  • Request-policy checks ensuring anti-automation controls cannot be skipped by omitting optional parameters
  • Web application monitoring for unexpected script-like content in property or agent records

Automated security scanning and code review tools may help identify unsafe data flows, but findings should be validated in the application's rendering context.

Sources

SourceLink
github.comgithub.com/WebCodingPlace/real-estate-manager/releases/tag/v7.4
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/classes/shortcodes.class.php#L1955
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/classes/shortcodes.class.php#L2006
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/classes/shortcodes.class.php#L69
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/inc/menu/page-agents.php#L128
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/inc/menu/page-agents.php#L17
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/inc/menu/page-agents.php#L45
plugins.trac.wordpress.orgplugins.trac.wordpress.org/browser/real-estate-manager/tags/7.3/inc/menu/page-agents.php#L55
wordfence.comwordfence.com/threat-intel/vulnerabilities/id/76bec529-bf1f-4f99-a809-3642f8c7e433?source=cve

Frequently asked

questions

It can be exploitable through a publicly reachable plugin workflow when unauthenticated users are allowed to submit or influence the affected field. The injected content must subsequently be rendered to another user's browser.

Not necessarily. The described CAPTCHA behavior allows the relevant check to be bypassed by omitting the g-recaptcha-response parameter, although other site-specific controls may still affect exposure.

Treat the field as untrusted, validate it against its intended data format, and apply context-appropriate output escaping wherever it is rendered. CAPTCHA enforcement should not depend on an optional parameter being present.

Combine secure input handling, output encoding, authorization checks, automated security testing, and code review rules for untrusted data flows into HTML. Defense-in-depth browser policies can further reduce the impact of missed cases.

It can be exploitable through a publicly reachable plugin workflow when unauthenticated users are allowed to submit or influence the affected field. The injected content must subsequently be rendered to another user's browser.

Not necessarily. The described CAPTCHA behavior allows the relevant check to be bypassed by omitting the g-recaptcha-response parameter, although other site-specific controls may still affect exposure.

Treat the field as untrusted, validate it against its intended data format, and apply context-appropriate output escaping wherever it is rendered. CAPTCHA enforcement should not depend on an optional parameter being present.

Combine secure input handling, output encoding, authorization checks, automated security testing, and code review rules for untrusted data flows into HTML. Defense-in-depth browser policies can further reduce the impact of missed cases.

Find out what's already
exploitable in your codebase.