☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON 🐛 CWE-918
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-28092

CVE-2025-28092 Server-Side Request Forgery in Shopxo
📅 PUBLISHED: 2025-03-28 00:00 UTC 🔄 UPDATED: 2026-08-28 11:35 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.28%
👁️
0.28% probability
6.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-28092 identifies a Server-Side Request Forgery (SSRF) vulnerability in ShopXO v6.4.0, specifically within the image upload function. This flaw allows an unauthenticated attacker to induce the server to make arbitrary HTTP requests to internal or external resources, potentially leading to internal network reconnaissance, data exfiltration, or further exploitation of internal services. The vulnerability is currently unpatched, and no public proof-of-concept (PoC) or exploit code has been released. The EPSS score is 0.0%, indicating low exploitation activity in the wild at the time of analysis.

⚡ 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

CVSS Breakdown & Threat Level

While a CVSS vector is not provided, based on the nature of SSRF vulnerabilities in web applications, a reasonable assessment is:

  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Changed (C) – The vulnerable component impacts resources beyond its original scope (e.g., internal network).
  • Confidentiality (C): High (H) – Can read internal files or service responses.
  • Integrity (I): Low (L) – May allow limited modification of internal state.
  • Availability (A): Low (L) – Could cause denial of service to internal services.

Estimated CVSS v3.1 Score: 9.1 (Critical)

Threat Level: Critical – SSRF vulnerabilities can lead to full internal network compromise, especially in cloud environments where metadata services are accessible.

Deep Dive & Mechanics

The vulnerability resides in the image upload functionality of ShopXO v6.4.0. When a user uploads an image, the application processes the file URL or path. Due to insufficient validation, an attacker can supply a malicious URL (e.g., http://169.254.169.254/latest/meta-data/) instead of a legitimate image. The server then fetches this URL, allowing the attacker to:

  • Access internal services: Reach services on the internal network (e.g., databases, admin panels).
  • Read cloud metadata: In cloud environments (AWS, GCP, Azure), access instance metadata endpoints.
  • Port scan internal hosts: Use the server as a proxy to scan internal IP ranges.
  • Bypass firewalls: Exploit the trust relationship between the server and internal resources.

The attack flow:

  1. Attacker identifies the image upload endpoint (e.g., /index.php?s=admin/upload/index).
  2. Attacker crafts a request with a URL parameter pointing to an internal resource.
  3. Server fetches the URL and returns the response (or error messages) to the attacker.
  4. Attacker iterates through internal IPs and ports to map the network.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is presumed to be in the image upload handler. A typical vulnerable pattern:

Vulnerable Code (PHP):

$url = $_POST['image_url'];
$imageContent = file_get_contents($url);
// Save image...

Patched Code (Hypothetical):

$url = $_POST['image_url'];
$parsedUrl = parse_url($url);
$host = $parsedUrl['host'];
// Validate host against whitelist
$allowedHosts = ['img.example.com', 'cdn.example.com'];
if (!in_array($host, $allowedHosts)) {
    die('Invalid image source');
}
// Additionally, validate that the response is an image
$imageContent = file_get_contents($url);
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimeType = finfo_buffer($finfo, $imageContent);
if (strpos($mimeType, 'image/') !== 0) {
    die('Not an image');
}

Exploitation & Lab Setup

Red Team

Lab Setup:

  • Target: ShopXO v6.4.0 running on a local server (e.g., http://target.local).
  • Attacker machine: Kali Linux with Burp Suite or curl.
  • Internal service: A simple HTTP server on 192.168.1.100:8080 to simulate an internal resource.

Exploitation Steps:

  1. Identify the upload endpoint. Use Burp Suite to intercept a normal image upload.
  2. Modify the request to point to an internal resource:
    POST /index.php?s=admin/upload/index HTTP/1.1
    Host: target.local
    Content-Type: application/x-www-form-urlencoded
    
    image_url=http://192.168.1.100:8080/internal-data
    
  3. Observe the response. If the server returns the content of internal-data, SSRF is confirmed.
  4. For cloud metadata:
    image_url=http://169.254.169.254/latest/meta-data/
    
  5. Use a tool like ssrfmap to automate scanning:
    python3 ssrfmap.py -r request.txt -p image_url -m readfiles,portscan
    

Blue Team

Detection:

  • Monitor outbound HTTP requests from the web server to unexpected IPs (especially private ranges: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16).
  • Alert on requests to cloud metadata IPs (169.254.169.254, 100.100.100.200 for Alibaba).
  • Log all image upload requests and validate the image_url parameter.

Mitigation:

  • Implement a whitelist of allowed image sources (e.g., only trusted CDNs).
  • Disable the allow_url_fopen PHP directive if not needed.
  • Use a proxy that blocks requests to private IP ranges.
  • Apply input validation to ensure the URL points to an image (check MIME type).

Indicators of Compromise (IOCs)

  • Network:
    • Outbound HTTP requests from the web server to private IP ranges (10.x.x.x, 172.16-31.x.x, 192.168.x.x).
    • Requests to cloud metadata endpoints (169.254.169.254, 100.100.100.200).
    • Unusual User-Agent strings in outbound requests (e.g., empty or generic).
  • Logs:
    • Web server logs showing image_url parameter with internal IPs.
    • Error logs containing file_get_contents failures for internal hosts.
  • File System:
    • Unexpected files in the upload directory that are not images (e.g., HTML, JSON).

Detection Engineering

YARA Rule

rule CVE_2025_28092_SSRF_ShopXO {
    meta:
        description = "Detects SSRF attempts targeting internal IPs in ShopXO image upload"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-28092"
    strings:
        $url_pattern = /image_url=http:\/\/(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}|169\.254\.\d{1,3}\.\d{1,3})/
        $metadata = "169.254.169.254"
        $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})/
    condition:
        $url_pattern or ($metadata and $internal_ip)
}

Sigma Rule

title: CVE-2025-28092 SSRF Attempt via ShopXO Image Upload
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests to private IP ranges from ShopXO web server
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: accesslog
detection:
    selection:
        cs-uri-query|contains: "image_url=http://"
    private_ip:
        cs-uri-query|contains:
            - "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."
            - "169.254."
    condition: selection and private_ip
falsepositives:
    - Legitimate internal image sources (if any)
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"CVE-2025-28092 SSRF Attempt - ShopXO Image Upload to Private IP";
    flow:to_server,established;
    content:"image_url=http://"; http_client_body;
    pcre:"/image_url=http:\/\/(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}|169\.254\.\d{1,3}\.\d{1,3})/Ri";
    classtype:attempted-recon;
    sid:10000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable image URL upload if not critical. Modify the application to only accept local file uploads.
  2. Apply input validation: Ensure the image_url parameter only allows whitelisted domains (e.g., img.example.com).
  3. Restrict outbound traffic: Use a firewall or web application firewall (WAF) to block outbound requests to private IP ranges from the web server.
  4. Monitor logs: Actively monitor for SSRF patterns as described in IOCs.

Long-term Fix:

  • Wait for an official patch from ShopXO. If none is forthcoming, consider forking the code and applying the hypothetical patch described above.
  • Upgrade to a newer version if available.
  • Implement a Content Security Policy (CSP) that restricts image sources.

Workaround:

  • Modify the PHP configuration to disable allow_url_fopen:
    allow_url_fopen = Off
    
  • If the application requires fetching remote images, use a dedicated proxy that validates URLs.

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-28092/ · 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.