Sessions Time Monitoring Full Automatic <= 1.1.3 - Missing Authorization
Description
The Sessions Time Monitoring Full Automatic plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 1.1.3. This makes it possible for unauthenticated attackers to perform an unauthorized action.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:NTechnical Details
<=1.1.3What Changed in the Fix
Changes introduced in v1.1.4
Source Code
WordPress.org SVN# Exploitation Research Plan - CVE-2026-32362 ## 1. Vulnerability Summary The **WP Sessions Time Monitoring Full Automatic** plugin (<= 1.1.3) contains a missing authorization vulnerability. Specifically, a sensitive function responsible for exporting session data into CSV format, `activity_time_cs…
Show full research plan
Exploitation Research Plan - CVE-2026-32362
1. Vulnerability Summary
The WP Sessions Time Monitoring Full Automatic plugin (<= 1.1.3) contains a missing authorization vulnerability. Specifically, a sensitive function responsible for exporting session data into CSV format, activity_time_csv_url, is hooked to after_setup_theme and can be triggered by any user (authenticated or unauthenticated) simply by providing a specific GET parameter. The function lacks any capability checks (current_user_can) or nonce verification.
Additionally, based on the CVSS vector (I:L, C:N), there is likely an unauthenticated tracking endpoint (AJAX-based) that allows attackers to manipulate activity logs (Integrity impact) by spoofing or updating session data without authorization.
2. Attack Vector Analysis
- Primary Endpoint: Any site URL with the
url_exportparameter. - Secondary Endpoint:
wp-admin/admin-ajax.php(for log manipulation). - Parameters:
url_export(GET): Triggers the CSV export logic.action(POST): Likelyactt_save_visitoractt_update_time(inferred from plugin slugactt).
- Authentication: None (Unauthenticated).
- Preconditions: The plugin must be active. For the CSV export, the function
actt_prepare_exportmust be reachable (
Summary
The WP Sessions Time Monitoring Full Automatic plugin is vulnerable to unauthorized data disclosure due to a missing authorization check in the `activity_time_csv_url` function. An unauthenticated attacker can trigger a CSV export of user session and activity data by simply visiting any page on the site with a specific GET parameter.
Vulnerable Code
// activitytime.php line 133 add_action('after_setup_theme', function () { activity_time_csv_url(); }); function activity_time_csv_url() { if (!isset($_GET['url_export'])) return; ob_clean(); global $wpdb; $table_name = $wpdb->prefix . 'actt_visited_pages'; $table_users_name = $wpdb->prefix . 'users'; $base_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]"; if (defined('CUSTOM_USER_TABLE')) $table_users_name = '`' . CUSTOM_USER_TABLE . '`'; $query = 'SELECT SUM(time_sec_total) as total_time, user_info, request_uri, title, user_id, user_email FROM ' . esc_sql($table_name) . ' LEFT JOIN ' . esc_sql($table_users_name) . ' ON ' . esc_sql($table_name) . '.user_id = ' . $table_users_name . '.ID WHERE is_visit_end = 1 '; $query .= 'GROUP BY title ORDER BY total_time DESC'; $data = $wpdb->get_results($query); // ... (logic to generate and output CSV) ...
Security Fix
@@ -136,6 +136,16 @@ { if (!isset($_GET['url_export'])) return; + // Require login + if (!is_user_logged_in()) { + wp_die('Unauthorized', 403); + } + + // Require admin capability + if ( ! current_user_can( 'administrator' ) ) { + exit(); + } + ob_clean(); global $wpdb;
Exploit Outline
To exploit this vulnerability, an attacker simply needs to send a GET request to any public-facing URL of the WordPress site (including the homepage) while appending the `url_export` parameter. Example Payload: `GET /?url_export=1` The function `activity_time_csv_url` is hooked to `after_setup_theme`, meaning it executes on every page load. Because it lacks capability checks (like `current_user_can('manage_options')`) or authentication checks (like `is_user_logged_in()`), the plugin will immediately process a database query against the activity tracking tables and return a CSV file containing user IDs, emails, requested URIs, and time spent on pages to the unauthenticated requester.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.