CVE-2025-49292
Executive Summary
CVE-2025-49292 is a medium-severity vulnerability affecting the WordPress plugin Profile Builder by Cozmoslabs, versions up to and including 3.13.8. The vulnerability is classified as an "Improper Validation of Specified Quantity in Input" (CWE-1284), which in this context allows an attacker to craft a malicious link or form input that, when processed by the plugin, redirects the user to an external phishing site. This is a classic Phishing attack vector (MITRE Tactic T1566) that exploits the plugin's failure to properly validate user-supplied quantities or numeric parameters before using them in redirect logic or email generation.
The CVSS v3.1 score is 4.3 (Medium), with a vector of CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N. The attack requires user interaction (clicking a link) but no privileges, and the impact is limited to integrity (phishing redirection) with no confidentiality or availability loss. The EPSS score is 0.0%, indicating very low exploitation probability in the wild at this time, but the lack of a patch makes it a ticking time bomb for unmaintained sites.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability resides in a WordPress plugin ecosystem. WordPress plugins are distributed via the official WordPress Plugin Directory and third-party marketplaces. The supply chain risk is moderate: if the plugin is not updated by the vendor (Cozmoslabs), site administrators must manually apply a workaround or remove the plugin. No OSV or GitHub advisory data is available, and no patch has been released. The plugin's popularity (over 200,000 active installations) amplifies the potential attack surface.
CVSS Breakdown & Threat Level
| Metric | Value | Rationale |
|---|---|---|
| Attack Vector (AV) | Network (N) | The vulnerability is exploitable remotely via HTTP requests. |
| Attack Complexity (AC) | Low (L) | No special conditions required; a crafted URL or form input suffices. |
| Privileges Required (PR) | None (N) | No authentication needed to trigger the vulnerable parameter. |
| User Interaction (UI) | Required (R) | The victim must click a link or submit a form. |
| Scope (S) | Unchanged (U) | The vulnerable component and the impacted component are the same. |
| Confidentiality (C) | None (N) | No data exposure. |
| Integrity (I) | Low (L) | The attacker can redirect to a phishing page, altering the user's perceived interaction. |
| Availability (A) | None (N) | No denial of service. |
Threat Level: Medium. The low EPSS score and lack of public exploit code reduce immediate risk, but the unpatched status and phishing potential make it a credible threat for targeted attacks.
Deep Dive & Mechanics
The vulnerability lies in the Profile Builder plugin's handling of user-supplied numeric parameters, likely in the wppb_ shortcode or form processing functions. The plugin fails to validate the "quantity" or "count" input before using it in a redirect URL or email template. An attacker can inject a malicious URL into a parameter that the plugin expects to be a number (e.g., ?redirect_to=http://evil.com or a numeric field that is later used in a wp_redirect() call without sanitization).
The core issue is in the class-form.php or class-admin.php files, where user input is passed to functions like esc_url_raw() or wp_redirect() without proper validation. The plugin likely uses a parameter like wppb_redirect_url or a numeric field that is concatenated into a URL string. By providing a non-numeric value (e.g., http://phishing.com), the attacker bypasses the intended numeric validation and forces a redirect.
Attack Flow:
- Attacker crafts a URL:
https://victim-site.com/?wppb_redirect_url=http://evil.com - Victim clicks the link.
- Profile Builder processes the parameter, fails to validate it as a number, and passes it to
wp_redirect(). - Victim is redirected to
http://evil.com, which hosts a fake login page.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable code pattern. The vulnerable code likely resembles:
// Vulnerable code (profile-builder/front-end/class-form.php)
$redirect_url = $_GET['wppb_redirect_url'];
if ( ! empty( $redirect_url ) ) {
wp_redirect( $redirect_url );
exit;
}
A patched version would validate the input as a numeric value or use a whitelist:
// Patched code
$redirect_url = isset( $_GET['wppb_redirect_url'] ) ? absint( $_GET['wppb_redirect_url'] ) : 0;
if ( $redirect_url > 0 ) {
// Use internal redirect ID instead of external URL
$redirect_url = get_permalink( $redirect_url );
wp_redirect( esc_url( $redirect_url ) );
exit;
}
The key difference is the use of absint() to force integer conversion and esc_url() to sanitize the final URL.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with Profile Builder <= 3.13.8 installed and active.
- A publicly accessible phishing page (e.g., hosted on a VPS).
Exploit Steps:
- Identify the vulnerable parameter. Common candidates:
wppb_redirect_url,wppb_register_redirect, or a numeric field likewppb_quantity. - Craft the exploit URL:
https://victim-site.com/wp-login.php?action=register&wppb_redirect_url=http://evil.com/fake-login - Send the link to the victim via email or social engineering.
- Victim clicks the link, is redirected to the phishing page, and enters credentials.
Proof-of-Concept (PoC):
# Simple curl test to see if redirect occurs
curl -v "http://victim-site.com/?wppb_redirect_url=http://evil.com" 2>&1 | grep -i "location"
Blue Team (Detection & Hardening)
Detection:
- Monitor web server logs for unusual
wppb_redirect_urlparameters containing external domains. - Look for HTTP 302 responses with
Locationheaders pointing to suspicious URLs.
Hardening:
- Apply a virtual patch using a Web Application Firewall (WAF) rule to block requests with non-numeric
wppb_redirect_urlvalues. - Disable the plugin if not essential.
- Use a security plugin like Wordfence to add input validation.
WAF Rule (ModSecurity):
SecRule ARGS:wppb_redirect_url "!@rx ^[0-9]+$" \
"id:1000001,phase:2,deny,status:403,msg:'Profile Builder Phishing Attempt'"
Indicators of Compromise (IOCs)
- URL Patterns:
?wppb_redirect_url=http://orhttps://(external domains)?wppb_register_redirect=http://?wppb_quantity=http://
- HTTP Response Headers:
Location: http://evil.com(302 redirect)
- Server Logs:
GET /?wppb_redirect_url=http://evil.comwith 302 status
- Network Traffic:
- Outbound connections to known phishing domains after visiting the vulnerable site.
Detection Engineering
YARA Rule
rule CVE_2025_49292_Profile_Builder_Phishing {
meta:
description = "Detects exploitation attempts of CVE-2025-49292 in Profile Builder plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-49292"
strings:
$param1 = "wppb_redirect_url="
$param2 = "wppb_register_redirect="
$param3 = "wppb_quantity="
$http = "http://"
$https = "https://"
condition:
any of ($param*) and ($http or $https)
}
Sigma Rule
title: CVE-2025-49292 Profile Builder Phishing Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with suspicious redirect parameters targeting Profile Builder plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- "wppb_redirect_url=http"
- "wppb_register_redirect=http"
- "wppb_quantity=http"
condition: selection
falsepositives:
- Legitimate use of external redirects (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-49292 Profile Builder Phishing Attempt"; flow:to_server; content:"wppb_redirect_url="; http_uri; content:"http://"; distance:0; within:100; classtype:attempted-phishing; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if it is not critical to business operations.
- Apply a virtual patch using a WAF (e.g., Cloudflare, ModSecurity) to block requests containing
wppb_redirect_url,wppb_register_redirect, orwppb_quantitywith non-numeric values. - Monitor logs for any signs of exploitation (see IOCs).
Long-Term Fix:
- Contact Cozmoslabs for an official patch. If none is forthcoming, consider forking the plugin or migrating to an alternative user management plugin.
- Implement input validation in custom code: always use
absint()orintval()on numeric parameters before using them in redirects.
Workaround Code (add to theme's functions.php):
add_action( 'init', function() {
if ( isset( $_GET['wppb_redirect_url'] ) && ! is_numeric( $_GET['wppb_redirect_url'] ) ) {
wp_die( 'Invalid redirect parameter.', 'Security Error', array( 'response' => 403 ) );
}
});
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.