CVE-2025-58977
Executive Summary
CVE-2025-58977 is a Server-Side Request Forgery (SSRF) vulnerability discovered in the WP eBay Product Feeds plugin for WordPress (slug: ebay-feeds-for-wordpress), developed by Rhys Wynne. The flaw affects all versions up to and including 3.4.8. An authenticated attacker with low privileges can exploit this vulnerability to make the WordPress server issue arbitrary HTTP requests to internal or external resources, potentially bypassing firewalls, accessing internal services, or performing port scans. The vulnerability is currently unpatched, and no official fix has been released by the vendor. The CVSS score is 4.9 (Medium), reflecting the low complexity and network-based attack vector, but limited impact on confidentiality.
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. As a supply chain risk, any site running this plugin is exposed until a patch is applied. Since the plugin is unmaintained or the vendor has not responded, users must consider removing or replacing the plugin. No known public exploit code exists, but the SSRF nature makes it a prime target for automated scanning.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Base Score: 4.9 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: Low (PR:L) – requires authenticated user with subscriber role or higher
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L) – limited information disclosure via SSRF
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Medium. While the CVSS score is moderate, SSRF can be chained with other vulnerabilities (e.g., internal service exploitation) to escalate impact. The lack of a patch increases the risk for unmonitored deployments.
Deep Dive & Mechanics
The vulnerability exists in the plugin’s functionality that fetches eBay product feeds. The plugin likely accepts a URL or endpoint parameter from the user (e.g., via a shortcode or admin panel) and makes an HTTP request to that URL without proper validation. An attacker can supply a malicious URL pointing to internal IP addresses (e.g., http://169.254.169.254/latest/meta-data/ for cloud metadata) or internal services (e.g., http://localhost:9200 for Elasticsearch).
Root Cause: The plugin does not sanitize or restrict the target URL of the outgoing HTTP request. The wp_remote_get() or similar function is called with user-supplied input, allowing arbitrary destinations.
Attack Flow:
- Attacker authenticates to WordPress (e.g., as a subscriber).
- Attacker crafts a request to the vulnerable endpoint (e.g., via a shortcode or AJAX handler) with a malicious URL.
- The WordPress server executes the request, potentially accessing internal resources.
- The response (or error) is reflected back to the attacker, leaking information.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable code pattern. The plugin likely contains code similar to:
// Vulnerable code (hypothetical)
$feed_url = $_POST['feed_url'];
$response = wp_remote_get( $feed_url );
echo wp_remote_retrieve_body( $response );
A patched version would include URL validation:
// Patched code (hypothetical)
$feed_url = $_POST['feed_url'];
$parsed_url = parse_url( $feed_url );
if ( ! in_array( $parsed_url['host'], $allowed_domains ) ) {
wp_die( 'Invalid URL' );
}
$response = wp_remote_get( $feed_url );
echo wp_remote_retrieve_body( $response );
Key differences:
- Vulnerable: No host validation, no allowlist.
- Patched: Host is checked against an allowlist of eBay domains.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress instance with WP eBay Product Feeds <= 3.4.8 installed and activated.
- Valid user credentials (subscriber or higher).
Exploitation Steps:
- Identify the vulnerable endpoint. Common patterns include:
/wp-admin/admin-ajax.php?action=ebay_feed_fetch&url=...- Shortcode
[ebay_feed url="..."]
- Craft a request to probe internal services:
curl -X POST 'http://target/wp-admin/admin-ajax.php' \ -d 'action=ebay_feed_fetch&url=http://169.254.169.254/latest/meta-data/' - If successful, the response will contain cloud metadata (e.g., IAM credentials).
- For internal port scanning, use:
curl -X POST 'http://target/wp-admin/admin-ajax.php' \ -d 'action=ebay_feed_fetch&url=http://127.0.0.1:9200/'
Note: No public exploit code exists; this is a conceptual demonstration.
Blue Team (Detection & Hardening)
Detection:
- Monitor outbound HTTP requests from the WordPress server to unexpected IPs (especially private ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8).
- Log all calls to
wp_remote_get()with suspicious URLs. - Use WAF rules to block requests containing internal IP patterns in POST/GET parameters.
Hardening:
- Disable the plugin immediately if not essential.
- If removal is not possible, apply a virtual patch via WAF to block SSRF attempts.
- Restrict outbound traffic from the WordPress server using firewall rules (e.g., allow only to eBay domains).
- Implement a WordPress security plugin that monitors for SSRF.
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, 127.0.0.0/8).
- Requests to cloud metadata endpoints (e.g.,
169.254.169.254). - Requests to internal service ports (e.g.,
localhost:9200,localhost:3306).
- File IOCs:
- Modified plugin files (check integrity of
ebay-feeds-for-wordpress). - Suspicious entries in WordPress debug log (e.g.,
wp-content/debug.log).
- Modified plugin files (check integrity of
- Log IOCs:
- Repeated
wp_remote_get()calls to non-eBay domains. - AJAX requests with
urlparameter containing IP addresses.
- Repeated
Detection Engineering
YARA Rule
rule CVE_2025_58977_SSRF_WordPress {
meta:
description = "Detects SSRF exploitation attempts against WP eBay Product Feeds plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-58977"
strings:
$s1 = "ebay-feeds-for-wordpress" nocase
$s2 = "wp_remote_get" nocase
$s3 = "feed_url" nocase
$ip_pattern = /(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|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}|169\.254\.\d{1,3}\.\d{1,3})/
condition:
all of ($s*) and $ip_pattern
}
Sigma Rule
title: SSRF Exploitation via WP eBay Product Feeds
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects outbound HTTP requests to private IP ranges from WordPress server, indicating SSRF via CVE-2025-58977
author: Valters IT
date: 2025-04-10
logsource:
category: network_connection
product: windows
service: sysmon
detection:
selection:
DestinationIp:
- '10.*'
- '172.16.*'
- '172.17.*'
- '172.18.*'
- '172.19.*'
- '172.20.*'
- '172.21.*'
- '172.22.*'
- '172.23.*'
- '172.24.*'
- '172.25.*'
- '172.26.*'
- '172.27.*'
- '172.28.*'
- '172.29.*'
- '172.30.*'
- '172.31.*'
- '192.168.*'
- '127.*'
- '169.254.*'
Initiated: true
Image: '*php*'
condition: selection
falsepositives:
- Legitimate plugin updates or admin actions
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-58977 SSRF Attempt - Private IP in URL"; flow:to_server,established; content:"GET"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=ebay_feed_fetch"; http_uri; pcre:"/(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2\d|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}|169\.254\.\d{1,3}\.\d{1,3})/Ri"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin – Deactivate and delete
ebay-feeds-for-wordpressfrom the WordPress admin panel. - Apply virtual patch – Use a Web Application Firewall (WAF) to block requests containing private IP addresses in the
urlparameter. - Monitor logs – Check for any prior exploitation attempts using the IOCs above.
Long-term Fix:
- Since no patch is available, consider migrating to an alternative eBay feed plugin that is actively maintained.
- If the plugin is critical, fork the code and implement URL validation (allowlist eBay domains only).
- Regularly audit WordPress plugins for vulnerabilities.
Valters IT Signature:
This report was generated by Valters IT DevSecOps AI. All information is provided for authorized security testing and defensive purposes only. Unauthorized exploitation is illegal.
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.