CVE-2025-62902
Executive Summary
CVE-2025-62902 is a medium-severity information disclosure vulnerability affecting the ThemeHunk WP Popup Builder WordPress plugin, versions 1.3.8 and earlier. The vulnerability allows an unauthenticated attacker to retrieve embedded sensitive data from the plugin’s configuration or stored popup content, leading to exposure of system information such as database credentials, API keys, or internal paths. This issue falls under CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) and is mapped to MITRE ATT&CK tactic T1213 (Data from Information Repositories). As a WordPress plugin vulnerability, it is specific to the WordPress ecosystem and does not involve Apache or Nginx directly.
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 is part of the WordPress plugin supply chain. The plugin is distributed via the official WordPress plugin repository and third-party marketplaces. Users who installed the plugin from these sources are affected. No official patch has been released by the vendor, and the plugin’s status remains unpatched. Organizations should treat this as a supply chain risk and consider removing or replacing the plugin until a fix is available.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 5.3 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
The threat level is medium due to the low complexity and no required privileges, but the impact is limited to information disclosure. However, exposed sensitive data could be leveraged for further attacks.
Deep Dive & Mechanics
The vulnerability resides in the WP Popup Builder plugin’s handling of popup data. The plugin stores sensitive system information (e.g., database credentials, API keys, or internal paths) in a manner that is accessible to unauthenticated users. This likely occurs through an insecure REST API endpoint, a misconfigured AJAX handler, or direct file access that exposes the plugin’s configuration or stored popup content.
Root Cause: The plugin fails to properly restrict access to its data storage mechanisms, allowing any user to retrieve embedded sensitive data without authentication.
Attack Vector: An attacker can send a crafted HTTP request to a vulnerable endpoint (e.g., /wp-json/wp-popup-builder/v1/config or a direct file read) to retrieve the sensitive information.
Impact: Successful exploitation leads to the disclosure of system information, which can be used to pivot to other attacks, such as database compromise or lateral movement.
Vulnerable vs. Patched Code
Since no patch is available, a comparison cannot be made. However, based on the vulnerability type, the following is a hypothetical example of vulnerable code and a potential fix:
Vulnerable Code (PHP):
// wp-popup-builder/includes/class-popup-data.php
function get_popup_config() {
$config = get_option('wp_popup_builder_config');
return $config; // Exposes all config data including sensitive info
}
add_action('rest_api_init', function () {
register_rest_route('wp-popup-builder/v1', '/config', array(
'methods' => 'GET',
'callback' => 'get_popup_config',
'permission_callback' => '__return_true' // No authentication
));
});
Patched Code (Hypothetical):
// wp-popup-builder/includes/class-popup-data.php
function get_popup_config() {
if (!current_user_can('manage_options')) {
return new WP_Error('rest_forbidden', 'You do not have permission.', array('status' => 403));
}
$config = get_option('wp_popup_builder_config');
// Sanitize sensitive data before returning
unset($config['db_password']);
unset($config['api_key']);
return $config;
}
add_action('rest_api_init', function () {
register_rest_route('wp-popup-builder/v1', '/config', array(
'methods' => 'GET',
'callback' => 'get_popup_config',
'permission_callback' => function () {
return current_user_can('manage_options');
}
));
});
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target WordPress site with WP Popup Builder plugin version <= 1.3.8.
- No authentication required.
Exploitation Steps:
- Identify the vulnerable endpoint. Common endpoints include:
/wp-json/wp-popup-builder/v1/config/wp-content/plugins/wp-popup-builder/config.json/wp-admin/admin-ajax.php?action=wp_popup_builder_get_config
- Send a GET request to the endpoint:
curl -X GET http://target.com/wp-json/wp-popup-builder/v1/config - Parse the response for sensitive data such as database credentials, API keys, or internal paths.
Example Output:
{
"db_host": "localhost",
"db_user": "root",
"db_password": "secret123",
"api_key": "sk-xxxxx",
"internal_path": "/var/www/html/wp-content/uploads/"
}
Blue Team
Detection:
- Monitor for unusual requests to
/wp-json/wp-popup-builder/v1/or/wp-content/plugins/wp-popup-builder/from unauthenticated IPs. - Look for responses containing sensitive keywords like
db_password,api_key, orsecret.
Hunting:
- Search logs for requests to the plugin’s REST API endpoints without authentication.
- Use the Sigma rule provided in Detection Engineering to identify exploitation attempts.
Containment:
- Immediately disable or remove the WP Popup Builder plugin.
- Rotate any exposed credentials (database passwords, API keys).
- Review server logs for signs of data exfiltration.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/wp-json/wp-popup-builder/v1/config - HTTP requests to
/wp-content/plugins/wp-popup-builder/config.json - HTTP requests to
/wp-admin/admin-ajax.php?action=wp_popup_builder_get_config
- HTTP requests to
- File IOCs:
- Presence of
wp-popup-builderplugin directory in/wp-content/plugins/ - Unauthorized access to plugin configuration files
- Presence of
- Behavioral IOCs:
- Unauthenticated access to plugin REST API endpoints
- Sudden increase in outbound traffic from the WordPress server
Detection Engineering
YARA Rule
rule CVE_2025_62902_WP_Popup_Builder_Info_Disclosure {
meta:
description = "Detects attempts to exploit CVE-2025-62902 in WP Popup Builder"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-62902"
strings:
$s1 = "/wp-json/wp-popup-builder/v1/config" ascii wide nocase
$s2 = "wp_popup_builder_config" ascii wide nocase
$s3 = "db_password" ascii wide nocase
$s4 = "api_key" ascii wide nocase
condition:
any of ($s1, $s2) or (all of ($s3, $s4))
}
Sigma Rule
title: CVE-2025-62902 WP Popup Builder Information Disclosure
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects unauthenticated access to WP Popup Builder sensitive endpoints
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
cs-uri-stem|contains:
- '/wp-json/wp-popup-builder/v1/config'
- '/wp-content/plugins/wp-popup-builder/config.json'
- '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=wp_popup_builder_get_config'
condition: selection
falsepositives:
- Legitimate admin access (should be authenticated)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-62902 WP Popup Builder Information Disclosure Attempt";
flow:to_server,established;
content:"GET";
http_method;
content:"/wp-json/wp-popup-builder/v1/config";
http_uri;
classtype:attempted-recon;
sid:1000001;
rev:1;
reference:cve,2025-62902;
)
Remediation & Mitigation
Immediate Actions:
- Disable or remove the WP Popup Builder plugin from all WordPress installations.
- Rotate any credentials that may have been exposed (database passwords, API keys, etc.).
- Review server logs for signs of exploitation and data exfiltration.
Long-term Mitigation:
- Monitor the vendor’s website for an official patch. If none is released, consider switching to an alternative popup builder plugin.
- Implement a Web Application Firewall (WAF) rule to block requests to the vulnerable endpoints.
- Apply the principle of least privilege to all WordPress plugins and ensure REST API endpoints require authentication.
Workaround:
- If the plugin cannot be removed immediately, add the following rule to
.htaccessto block access to the vulnerable endpoints:<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^wp-json/wp-popup-builder/v1/config - [F,L] RewriteRule ^wp-content/plugins/wp-popup-builder/config.json - [F,L] </IfModule>
Valters IT
DevSecOps & Cyber Threat Intelligence Expert
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.