Skip to content

Missing Authorization on Admin Datatable Endpoints Allows Unauthorized Access to Sensitive Data

Moderate
MrWeez published GHSA-mj5g-j7fq-7hc4 May 8, 2026

Package

composer Ctrlpanel-gg/panel (Composer)

Affected versions

<= 1.1.1

Patched versions

1.2.0

Description

Summary

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.

Details

The following 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.

Affected controllers:

Controller Endpoint Sensitive data exposed
UserController /admin/users/datatable Email addresses, IP addresses, roles, credit balances, referral codes, account metadata
RoleController /admin/roles/datatable Role names, power levels, permission counts, assigned user counts
PaymentController /admin/payments/datatable Payment IDs, processor transaction IDs (Stripe/PayPal), amounts, currencies, payment methods, linked usernames
VoucherController /admin/vouchers/datatable Voucher codes, credit values, usage limits, expiry dates, validity status
PartnerController /admin/partners/datatable Partner user IDs, discount rates, referral commission percentages
TicketsController /admin/ticket/datatable Ticket IDs, titles, message content, category, priority, status, linked usernames
TicketCategoryController /admin/ticket/category/datatable Category names, ticket counts
ServerController /admin/servers/datatable Server names, identifiers, owner associations, product specs, billing rates, last billed timestamps
CouponController /admin/coupons/datatable Coupon codes, discount type and value, usage limits, expiry dates
ProductController /admin/products/datatable Product names, pricing, resource limits (RAM/CPU/disk), billing periods

PoC

Log in as any regular (non-admin) user and send the following request:

GET /admin/users/datatable HTTP/1.1
Host: <panel_url>
Cookie: <valid_session_cookie>

The response returns a JSON DataTable payload containing all registered users'
email addresses, IP addresses, roles, and account metadata.

The same technique applies to all endpoints listed in the table above.

Impact

An authenticated attacker can enumerate:

  • User PII - email addresses and last-known IP addresses of all registered
    users, enabling targeted phishing or account correlation
  • Payment and transaction records - processor-level transaction IDs
    (Stripe pi_*, PayPal order IDs), amounts, and linked usernames -
    potential violation of PCI-DSS / GDPR depending on deployment
  • Active voucher and coupon codes - valid codes with remaining uses and
    expiry dates, enabling unauthorized financial abuse
  • Role and permission structure - full privilege hierarchy, aiding
    privilege escalation attempts
  • Server ownership mappings - server identifiers, owners, and billing
    details, aiding further reconnaissance
  • Support ticket contents - message bodies and metadata, potentially
    containing sensitive user communications

Remediation

Add an appropriate authorization check at the beginning of each affected
datatable() method, using the panel's existing permission system.
The specific permission or permission group will vary by controller -
refer to the checks already applied to other actions within the same
controller as a reference.

This brings the datatable() methods in line with the permission model
already enforced throughout the rest of the admin area.

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

CVE ID

CVE-2026-34233

Weaknesses

Improper Access Control

The product does not restrict or incorrectly restricts access to a resource from an unauthorized actor. Learn more on MITRE.

Missing Authorization

The product does not perform an authorization check when an actor attempts to access a resource or perform an action. Learn more on MITRE.

Credits