{"id":"CVE-2026-116752","kind":"vulnerability","aliases":["CVE-2026-116752"],"related":[],"title":"GeoDirectory WordPress plugin: stored XSS via post_images lets subscribers run scripts","description":"The GeoDirectory – WP Business Directory Plugin and Classified Listings Directory plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'post_images' parameter in all versions up to, and including, 2.8.197 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. The injected payload does not fire for the attacker directly; it executes in the browser of any Administrator or Editor who opens the pending listing's edit screen, making this a privilege-escalation-capable stored XSS chain triggered through normal editorial workflow.","summary":"The GeoDirectory WordPress plugin, all versions up to and including 2.8.197, does not sanitize the 'post_images' parameter, enabling stored cross-site scripting. An authenticated subscriber can plant a script that runs in the browser of an administrator or editor who opens the pending listing's edit screen.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["geodirectory","package","self-hosted","wordpress"],"not_affected_if":["patched-version","plugin-not-installed"],"how_to_check":"- Check the installed GeoDirectory plugin version in the WordPress admin Plugins screen or `wp plugin get geodirectory --field=version`\n- Treat sites running `2.8.197` or earlier as exposed","fix":"- Move the GeoDirectory plugin to a version later than `2.8.197`; the sources do not name the fixed version","status":"open","published_at":"2026-10-31T10:16:37+00:00","first_seen_at":"2026-10-31T10:34:56+00:00","triaged_at":"2026-10-31T10:35:58+00:00","updated_at":"2026-10-31T10:35:58+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-31T10:35:58Z","model":"claude-haiku-5-5","output":{"fix":"- Move the GeoDirectory plugin to a version later than `2.8.197`; the sources do not name the fixed version","reach":"internet","title":"GeoDirectory WordPress plugin: stored XSS via post_images lets subscribers run scripts","impact":"medium","summary":"The GeoDirectory WordPress plugin, all versions up to and including 2.8.197, does not sanitize the 'post_images' parameter, enabling stored cross-site scripting. An authenticated subscriber can plant a script that runs in the browser of an administrator or editor who opens the pending listing's edit screen.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","geodirectory","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Editor or administrator browser runs attacker script, enabling privilege escalation","analyst_note":"Confirm the fixed plugin version and whether the subscriber role is open by default on the NVD entry or vendor changelog.","how_to_check":"- Check the installed GeoDirectory plugin version in the WordPress admin Plugins screen or `wp plugin get geodirectory --field=version`\n- Treat sites running `2.8.197` or earlier as exposed","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","patched-version"],"who_is_affected":"Sites running the GeoDirectory plugin up to and including 2.8.197 that allow subscriber-level accounts, where editors or administrators review pending listings. Sites without this plugin or with a newer version are not affected. The sources do not say whether non-default settings are required.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000736,"input_tokens":4275,"output_tokens":616,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-116752':15A,18A '-2026':14A,17A '2.8.197':35B,107C 'access':127C,143C 'administr':63B,164C 'arbitrari':132C 'attack':122C,155C 'authent':50B,121C 'browser':60B,161C 'busi':77C 'capabl':181C 'chain':184C 'classifi':81C 'cross':46B,92C 'cross-sit':45B,91C 'cve':13A,16A 'direct':156C 'directori':78C,83C 'due':108C 'edit':72B,173C 'editor':65B,166C 'editori':188C 'enabl':43B 'escal':180C 'escap':115C 'execut':139C,158C 'fire':152C 'geodirectori':1A,19B,26B,75C 'host':23B 'imag':8A,41B,98C 'includ':34B,106C 'inject':131C,145C,148C 'input':111C 'insuffici':110C 'let':9A 'level':126C 'list':70B,82C,171C 'make':117C,175C 'normal':187C 'open':67B,168C 'output':114C 'packag':20B 'page':136C,146C 'paramet':42B,99C 'payload':149C 'pend':69B,170C 'plant':53B 'plugin':3A,28B,79C,84C 'possibl':119C 'post':7A,40B,97C 'privileg':179C 'privilege-escalation-cap':178C 'run':11A,57B 'sanit':38B,112C 'screen':73B,174C 'script':12A,48B,55B,94C,134C 'self':22B 'self-host':21B 'site':47B,93C 'store':4A,44B,90C,182C 'subscrib':10A,51B,125C 'subscriber-level':124C 'trigger':185C 'user':142C 'version':30B,102C 'via':6A,95C 'vulner':88C 'web':133C 'whenev':140C 'wordpress':2A,24B,27B,86C 'workflow':189C 'wp':76C 'xss':5A,183C","nicknames":[],"mitigations":[],"who_affected":"Sites running the GeoDirectory plugin up to and including 2.8.197 that allow subscriber-level accounts, where editors or administrators review pending listings. Sites without this plugin or with a newer version are not affected. The sources do not say whether non-default settings are required.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-31T10:16:37+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116752","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116752","severity":null,"published_at":"2026-10-31T10:16:37+00:00","modified_at":"2026-10-31T10:16:37+00:00","first_seen_at":"2026-10-31T10:34:56+00:00","fetched_at":"2026-10-31T10:34:56+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}