CVE-2025-52713
Executive Summary
CVE-2025-52713 is a Server-Side Request Forgery (SSRF) vulnerability discovered in the Post and Page Builder by BoldGrid WordPress plugin, affecting versions up to and including 1.27.8. This flaw allows an unauthenticated attacker to make arbitrary HTTP requests from the vulnerable server, potentially leading to internal network reconnaissance, port scanning, or access to cloud metadata endpoints (e.g., AWS, GCP, Azure). The vulnerability is classified as a WordPress ecosystem issue 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 resides in a WordPress plugin distributed via the official WordPress plugin repository. Users who installed the plugin via the WordPress dashboard or automated deployment tools (e.g., Composer, WP-CLI) are affected. No official patch has been released as of the latest analysis. The plugin is not distributed via NPM, PyPI, Go, or Ruby ecosystems.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: Low (potential internal data exposure)
- Integrity Impact: Low (potential manipulation of internal services)
- Availability Impact: None
Threat Level: Medium. While the CVSS score is moderate, the SSRF nature can be chained with other vulnerabilities (e.g., cloud metadata theft) to escalate impact.
Deep Dive & Mechanics
The vulnerability exists in the post-and-page-builder plugin's handling of user-supplied URLs during image or resource fetching. The plugin fails to validate or sanitize the target URL, allowing an attacker to specify arbitrary internal or external addresses. The server then makes HTTP requests to those addresses, enabling SSRF.
Root Cause: The plugin uses wp_remote_get() or similar WordPress HTTP API functions without proper URL validation (e.g., no blocklist for private IP ranges, no hostname allowlist).
Attack Flow:
- Attacker identifies a vulnerable endpoint (e.g.,
/wp-admin/admin-ajax.php?action=boldgrid_fetch_url). - Attacker sends a crafted request with a target URL pointing to an internal resource (e.g.,
http://169.254.169.254/latest/meta-data/). - The server fetches the resource and returns the response to the attacker.
- Attacker can enumerate internal services, read cloud metadata, or perform port scanning.
Vulnerable vs. Patched Code
Since no official patch is available, the following is a hypothetical fix based on common SSRF mitigation patterns.
Vulnerable Code (simplified):
function boldgrid_fetch_url() {
$url = $_POST['url'];
$response = wp_remote_get($url);
echo wp_remote_retrieve_body($response);
}
Patched Code (hypothetical):
function boldgrid_fetch_url() {
$url = $_POST['url'];
if (!boldgrid_is_safe_url($url)) {
wp_die('Invalid URL');
}
$response = wp_remote_get($url);
echo wp_remote_retrieve_body($response);
}
function boldgrid_is_safe_url($url) {
$parsed = parse_url($url);
$host = $parsed['host'] ?? '';
// Block private IP ranges
if (filter_var($host, FILTER_VALIDATE_IP)) {
if (!filter_var($host, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
return false;
}
}
// Allow only specific domains (example)
$allowed = ['images.example.com', 'api.example.com'];
if (!in_array($host, $allowed)) {
return false;
}
return true;
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress instance with Post and Page Builder by BoldGrid <= 1.27.8.
- Network access to the WordPress admin-ajax.php endpoint.
Exploitation Steps:
- Identify the vulnerable AJAX action (e.g.,
boldgrid_fetch_url). - Craft a POST request to
/wp-admin/admin-ajax.phpwith the action and a malicious URL. - Example using
curl:curl -X POST http://target.com/wp-admin/admin-ajax.php \ -d "action=boldgrid_fetch_url&url=http://169.254.169.254/latest/meta-data/" - The response will contain the cloud metadata if the server is hosted on AWS.
Advanced Exploitation:
- Use SSRF to scan internal ports (e.g.,
http://127.0.0.1:8080). - Chain with other vulnerabilities (e.g., file read via
file://protocol if supported).
Blue Team
Detection:
- Monitor for unusual outbound HTTP requests from the WordPress server to internal IPs.
- Look for requests to cloud metadata endpoints (169.254.169.254, 100.100.100.200, etc.).
- Analyze web server logs for
admin-ajax.phprequests with suspiciousurlparameters.
Hunting:
- Search for
boldgrid_fetch_urlin access logs. - Correlate with internal network traffic logs.
Indicators of Compromise (IOCs)
- Network IOCs:
- Outbound HTTP requests to private IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16).
- Requests to cloud metadata IPs (169.254.169.254, 100.100.100.200, 169.254.169.253).
- Requests to
localhostor127.0.0.1.
- File IOCs:
- Modified
post-and-page-builderplugin files (if attacker uploaded a backdoor).
- Modified
- Log IOCs:
- Repeated
admin-ajax.phprequests withaction=boldgrid_fetch_urland varyingurlparameters.
- Repeated
Detection Engineering
YARA Rule
rule CVE_2025_52713_SSRF_BoldGrid {
meta:
description = "Detects SSRF exploitation attempts against BoldGrid Post and Page Builder"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-52713"
strings:
$ajax_action = "boldgrid_fetch_url"
$url_param = "url="
$internal_ip = /(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[01])\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3})/
$metadata_ip = /169\.254\.169\.\d{1,3}/
condition:
$ajax_action and $url_param and ($internal_ip or $metadata_ip)
}
Sigma Rule
title: SSRF Exploitation via BoldGrid Post and Page Builder
id: 8a3f5c2e-1b4d-4f7a-9c6e-2d8b0a1e3f5c
status: experimental
description: Detects HTTP requests to internal IPs via BoldGrid plugin AJAX action
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_log
detection:
selection:
cs-uri-query|contains: "action=boldgrid_fetch_url"
cs-uri-query|contains: "url="
filter:
cs-uri-query|contains:
- "url=http://10."
- "url=http://172."
- "url=http://192.168."
- "url=http://127."
- "url=http://169.254."
condition: selection and filter
falsepositives:
- Legitimate internal resource fetching (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-52713 SSRF Attempt - BoldGrid Plugin";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=boldgrid_fetch_url"; http_client_body;
content:"url="; http_client_body;
pcre:"/url=http:\/\/(10\.|172\.(1[6-9]|2[0-9]|3[01])\.|192\.168\.|127\.|169\.254\.)/Ri";
sid:1000001;
rev:1;
reference:cve,2025-52713;
priority:2;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if not essential.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithaction=boldgrid_fetch_urland suspiciousurlparameters. - Restrict outbound HTTP traffic from the WordPress server using network firewalls (e.g., allow only known external domains).
Long-term Fix:
- Apply the official patch once released by BoldGrid.
- If no patch is forthcoming, consider replacing the plugin with an alternative.
Workaround:
- Add the following code to the theme's
functions.phpto block the vulnerable action:add_action('wp_ajax_boldgrid_fetch_url', function() { wp_die('Disabled for security'); }, 1); add_action('wp_ajax_nopriv_boldgrid_fetch_url', function() { wp_die('Disabled for security'); }, 1);
Valters IT
Securing Digital Frontiers
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.