CVE-2026-22491

My auctions allegro <= 3.6.34 - Reflected Cross-Site Scripting

mediumImproper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
6.1
CVSS Score
6.1
CVSS Score
medium
Severity
Unpatched
Patched in
N/A
Time to patch

Description

The My auctions allegro plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to, and including, 3.6.34 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that execute if they can successfully trick a user into performing an action such as clicking on a link.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Low
Confidentiality
Low
Integrity
None
Availability

Technical Details

Affected versions<=3.6.34
PublishedMarch 5, 2026
Last updatedMarch 12, 2026
Research Plan
Unverified

This research plan outlines the steps to identify and exploit a Reflected Cross-Site Scripting (XSS) vulnerability in the **My auctions allegro** plugin (versions <= 3.6.34). ### 1. Vulnerability Summary The "My auctions allegro" plugin fails to properly sanitize or escape user-supplied input from …

Show full research plan

This research plan outlines the steps to identify and exploit a Reflected Cross-Site Scripting (XSS) vulnerability in the My auctions allegro plugin (versions <= 3.6.34).

1. Vulnerability Summary

The "My auctions allegro" plugin fails to properly sanitize or escape user-supplied input from HTTP GET parameters before echoing them back into the HTML response. This occurs in the context of administrative pages or potentially public-facing auction displays. An attacker can craft a malicious URL containing a JavaScript payload; if a logged-in user (typically an administrator) clicks this link, the script executes in their browser session.

2. Attack Vector Analysis

  • Endpoint: wp-admin/admin.php (for admin-side reflection) or a page containing the plugin's shortcode.
  • Vulnerable Parameter: Likely s, tab, msg, error, or id (inferred).
  • Authentication: Unauthenticated (to craft and send the link), but requires a victim (Admin) to click it for high-impact exploitation.
  • Preconditions: The plugin must be active. For admin-side XSS, the victim must have an active session.

3. Code Flow

  1. The plugin registers an admin menu page via add_menu_page() or add_submenu_page() (likely in a file like my-auctions-allegro.php or includes/admin.php).
  2. The callback function for this menu page is triggered when wp-admin/admin.php?page=my-auctions-allegro... is visited.
  3. Inside the callback, the code retrieves a parameter from the global $_GET or $_REQUEST array.
  4. The value is directly printed using echo or printf without passing through esc_html(), esc_attr(), or wp_kses().
  5. Sink: echo $_GET['parameter_name'];

4. Nonce Acquisition Strategy

Reflected XSS in a GET parameter typically occurs during the rendering phase and often does not require a nonce, as it is not a state-changing operation (like a POST request). However, if the reflection is inside a form that uses a nonce, the reflection itself usually happens before/regardless of the nonce check.

If the agent finds that a nonce is required to reach the vulnerable code path:

  1. Identify Shortcode: Search for add_shortcode in the plugin: grep -r "add_shortcode" ..
  2. Setup Page: Create a page containing that shortcode:
    wp post create --post_type=page --post_status=publish --post_content='[my-auctions-allegro-shortcode]'
  3. Navigate: Use browser_navigate to visit the newly created page.
  4. Extract: Look for a localized script containing a nonce.
    • Example: browser_eval("window.maa_vars?.nonce") (inferred variable name).
    • Verify the variable name by searching the source for wp_localize_script.

5. Exploitation Strategy

Step 1: Locate the Reflection Point
The agent should first use grep to find unescaped output of GET parameters:

grep -rP "echo.*\$_GET\[" .
grep -rP "echo.*\$_REQUEST\[" .

Step 2: Identify the Admin Page
Determine the admin slug to target:

grep -r "add_menu_page" .

Step 3: Craft the Payload
Based on the identified parameter (e.g., tab), craft a Reflected XSS URL.

  • Target URL: http://localhost:8080/wp-admin/admin.php?page=[SLUG]&[PARAM]=[PAYLOAD]
  • Payload 1 (Simple): <script>alert(window.origin)</script>
  • Payload 2 (Attribute Breakout): "><script>alert(1)</script>

Step 4: Execute the Exploit
Use the http_request tool or browser_navigate (to simulate the admin clicking the link). Since this is Reflected XSS, browser_navigate is preferred to "see" the execution.

// Example call for the agent
browser_navigate("http://localhost:8080/wp-admin/admin.php?page=my-auctions-allegro&tab=<script>console.log('XSS_SUCCESS')</script>");

6. Test Data Setup

  1. Install Plugin: Ensure my-auctions-allegro-free-edition version 3.6.34 is installed and active.
  2. Administrator User: Use the existing admin credentials for the browser_navigate session.
  3. Content: If the reflection is on the frontend, create a post with the plugin's main shortcode (e.g., [my-auctions-allegro]).

7. Expected Results

  • When navigating to the crafted URL, the browser should execute the injected script.
  • In a test environment, this is confirmed by checking the console logs for a specific string (e.g., XSS_SUCCESS) or an alert box being triggered.
  • The HTML source of the rendered page will contain the raw payload instead of an escaped version (e.g., <script> instead of &lt;script&gt;).

8. Verification Steps

  1. Source Check: After the http_request, check the body for the unescaped payload:
    grep "<script>alert(1)</script>" response_body.html
  2. Browser Verification: Use browser_eval to check if a global variable set by the payload exists:
    browser_eval("window.xss_executed = true;")
  3. Manual Code Review: Verify the file and line number identified by grep to confirm no sanitization functions are present.

9. Alternative Approaches

If simple reflection in $_GET isn't found, check for:

  • $_SERVER['REQUEST_URI']: Often reflected in form actions.
    • Payload: /wp-admin/admin.php/page=slug?param="><script>alert(1)</script>
  • $_SERVER['PHP_SELF']: Similar to above.
  • Shortcode Attributes: If the plugin reflects attributes passed in a shortcode without escaping, an attacker with "Contributor" or "Author" permissions could achieve Stored XSS, which is often related to reflected sanitization failures.
Research Findings
Static analysis — not yet PoC-verified

Summary

The My auctions allegro plugin for WordPress is vulnerable to Reflected Cross-Site Scripting in versions up to 3.6.34 due to the plugin failing to sanitize or escape user-supplied GET parameters before rendering them in the admin dashboard. An attacker can exploit this by tricking a logged-in administrator into clicking a crafted link, allowing for arbitrary script execution in the victim's session.

Exploit Outline

The attacker identifies a GET parameter reflected in the plugin's admin pages (such as 'tab', 's', or 'msg') and crafts a URL targeting the admin dashboard (e.g., `wp-admin/admin.php?page=my-auctions-allegro`) containing a payload like `<script>alert(1)</script>`. This link is then sent to an administrator via social engineering. When the administrator visits the link while logged in, the script executes in their browser context, enabling the attacker to potentially capture session data or perform unauthorized administrative actions.

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.