Automated FedEx live/manual rates with shipping labels – HPOS supported <= 5.1.8 - Missing Authorization
Description
The Automated FedEx live/manual rates with shipping labels – HPOS supported plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 5.1.8. 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
<=5.1.8# Research Plan: CVE-2026-25456 - Missing Authorization in Automated FedEx Shipping ## 1. Vulnerability Summary The **Automated FedEx live/manual rates with shipping labels – HPOS supported** plugin (<= 5.1.8) contains a missing authorization vulnerability. Specifically, an AJAX handler or a initia…
Show full research plan
Research Plan: CVE-2026-25456 - Missing Authorization in Automated FedEx Shipping
1. Vulnerability Summary
The Automated FedEx live/manual rates with shipping labels – HPOS supported plugin (<= 5.1.8) contains a missing authorization vulnerability. Specifically, an AJAX handler or a initialization hook fails to verify the user's capabilities (e.g., current_user_can('manage_options')) and nonces before executing sensitive actions. Given the CVSS vector (I:L - Integrity: Low), the vulnerability likely allows unauthenticated attackers to modify plugin settings, potentially altering shipping rates, API credentials, or FedEx account configurations.
2. Attack Vector Analysis
- Endpoint:
wp-admin/admin-ajax.php - Vulnerable Action:
wp_ajax_nopriv_registration for a function intended for admin use (inferred). Likely related to settings persistence or rate management. - Parameters: A POST request containing an
actionparameter and various configuration keys. - Preconditions: The plugin must be active. No authentication is required for
wp_ajax_nopriv_actions.
3. Code Flow
- Entry Point: The attacker sends a POST request to
admin-ajax.php. - Hook Registration: The plugin registers a handler via
add_action( 'wp_ajax_nopriv_[ACTION_NAME]', ... )in a class constructor or aninithook. - Execution:
admin-ajax.phptriggers the callback function associated with the action. - Vulnerable Sink: The callback function performs an operation—such as
update_option()orupdate_post_meta()—without callingcurrent_user_can()or verifying a nonce.
4. Nonce Acquisition Strategy
While many "Missing Authorization" vulnerabilities also lack nonce checks, some may still use wp_verify_nonce() but lack capability checks. If a nonce is required:
- Identify Script Localization: Search for
wp_localize_scriptin the codebase to find the JavaScript object name (e.g.,a2z_fedex_varsorfedex_shipping_params). - Find Script Enqueueing: Identify where the scripts are enqueued (e.g., the FedEx settings page or the WooCommerce checkout/product pages).
- Create Landing Page: If the scripts only load on product pages, create a dummy product:
wp post create --post_type=product --post_title="Test Product" --post_status=publish - Extract Nonce:
- Navigate to the product page or checkout page.
- Use
browser_evalto extract the nonce:browser_eval("window.a2z_fedex_vars?.nonce")(Replacea2z_fedex_varswith the actual identifier found in step 1).
5. Exploitation Strategy
The goal is to modify a plugin setting (e.g., the FedEx Account ID) to demonstrate unauthorized integrity modification.
- Discovery:
- Search for
wp_ajax_noprivin the plugin directory:grep -rn "wp_ajax_nopriv" . - Focus on actions that involve saving, updating, or deleting (e.g.,
a2z_fedex_save_settings,a2z_fedex_update_rates).
- Search for
- Payload Construction:
- Identify the option name used to store settings (e.g.,
a2z_fedex_settings). - Construct a POST request to
admin-ajax.php.
- Identify the option name used to store settings (e.g.,
- HTTP Request (via
http_request):- Method: POST
- URL:
http://[TARGET]/wp-admin/admin-ajax.php - Headers:
Content-Type: application/x-www-form-urlencoded - Body:
action=[ACTION_NAME]&[SETTING_KEY]=[MALICIOUS_VALUE]&_ajax_nonce=[NONCE_IF_FOUND]
6. Test Data Setup
- Install Plugin: Ensure
a2z-fedex-shippingversion <= 5.1.8 is installed. - Check Default Settings: Verify existing FedEx settings via CLI:
wp option get a2z_fedex_settings(or similar inferred option name). - WooCommerce Setup: Since this is a shipping plugin, WooCommerce must be active:
wp plugin activate woocommerce
7. Expected Results
- The server returns a
200 OKor a JSON success response (e.g.,{"success":true}). - The target WordPress option (the plugin settings) is updated with the attacker-controlled value.
8. Verification Steps
- Verify Option Change:
wp option get a2z_fedex_settings
Check if the value for the modified key matches the payload sent in the exploit. - Admin UI Check: Navigate to the plugin settings page in the WordPress dashboard and verify the settings reflect the change.
9. Alternative Approaches
- Rate Manipulation: If the vulnerability is in a function that calculates rates, attempt to send a request that forces a $0 shipping rate or a fixed high rate to interfere with the checkout process.
- REST API Check: If no AJAX actions are found, search for
register_rest_routewith apermission_callbackset to__return_trueor missing entirely. - Init Hook Hijack: Search for
isset($_POST['...'])checks insideadmin_initorinithooks that don't check for user privileges.
Summary
The Automated FedEx live/manual rates with shipping labels plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on AJAX handlers or initialization hooks in versions up to and including 5.1.8. This allows unauthenticated attackers to perform administrative actions such as modifying plugin settings, shipping rates, or FedEx API configurations.
Exploit Outline
1. Identify AJAX actions registered by the plugin using wp_ajax_nopriv_ or wp_ajax_ handlers that perform sensitive operations (e.g., saving settings) without calling current_user_can(). 2. If a nonce is required, locate where the plugin enqueues scripts using wp_localize_script to find the nonce identifier and extract it from the source of public pages like the checkout or product pages. 3. Construct a POST request to /wp-admin/admin-ajax.php including the vulnerable 'action' parameter and malicious configuration data (e.g., modifying the FedEx Account ID or API keys). 4. Execute the request to modify the site's shipping configuration without authentication.
Check if your site is affected.
Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.