CVE-2025-48700 Microsoft Sentinel · KQL

Detect Zimbra Collaboration Suite XSS Exploitation (CVE-2025-48700) in Microsoft Sentinel

Detects exploitation of a stored or reflected cross-site scripting (XSS) vulnerability in Synacor Zimbra Collaboration Suite (ZCS). This KEV-listed vulnerability allows attackers to inject malicious scripts into the Zimbra web client, potentially leading to session hijacking, credential theft, or further lateral movement within the organization. XSS in webmail platforms is frequently exploited by threat actors to steal session tokens and pivot to email account compromise.

MITRE ATT&CK

Tactic
Initial Access Credential Access Collection

KQL Detection Query

Microsoft Sentinel (KQL)
kusto
let ZimbraHosts = dynamic(["zimbra", "webmail", "mail"]);
let XSSPatterns = dynamic(["<script", "javascript:", "onerror=", "onload=", "eval(", "document.cookie", "document.location", "window.location", "String.fromCharCode", "atob(", "btoa("]);
let ZimbraXSSPaths = dynamic(["/zimbra/", "/service/soap", "/h/", "/m/", "/B6/"]);
union
  (
    W3CIISLog
    | where csUriStem has_any (ZimbraXSSPaths)
    | where csUriQuery has_any (XSSPatterns) or csReferer has_any (XSSPatterns)
    | project TimeGenerated, Computer, csUriStem, csUriQuery, csReferer, csUsername, cIP = c_ip, scStatus = sc_status, csUserAgent = cs_User_Agent
  ),
  (
    CommonSecurityLog
    | where DeviceProduct has_any ("Zimbra", "ZCS")
    | where RequestURL has_any (XSSPatterns) or Message has_any (XSSPatterns)
    | project TimeGenerated, Computer = DeviceName, csUriStem = RequestURL, csUriQuery = RequestURL, csReferer = "", csUsername = DestinationUserName, cIP = SourceIP, scStatus = tostring(EventOutcome), csUserAgent = RequestClientApplication
  )
| where scStatus in ("200", "302", "301") or isempty(scStatus)
| summarize
    RequestCount = count(),
    UniqueXSSPayloads = dcount(csUriQuery),
    SamplePayloads = make_set(csUriQuery, 5),
    FirstSeen = min(TimeGenerated),
    LastSeen = max(TimeGenerated)
    by cIP, csUsername, Computer, bin(TimeGenerated, 5m)
| where RequestCount >= 1
| extend Severity = "High", CVE = "CVE-2025-48700"
high severity medium confidence

Detects XSS payload patterns in Zimbra web server access logs and common security log sources. Looks for script injection markers in URI parameters and referrer headers targeting Zimbra-specific URL paths.

Data Sources

W3CIISLogCommonSecurityLogAzureDiagnostics

Required Tables

W3CIISLogCommonSecurityLog

False Positives & Tuning

  • Security scanner or WAF testing tools that probe for XSS vulnerabilities during authorized penetration tests
  • Legitimate email content containing HTML that resembles XSS patterns when logged by the web server
  • Automated vulnerability assessment tools running against Zimbra infrastructure
  • Browser auto-fill or bookmark data containing special characters that match XSS heuristics

Other platforms for CVE-2025-48700


Testing Methodology

Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Basic Reflected XSS Probe via Zimbra Search Parameter

    Expected signal: Web server access log entry showing GET /zimbra/h/search with q=%3Cscript%3E... URL-encoded payload, HTTP 200 response, source IP of test system

  2. Test 2Event Handler XSS Payload Delivery via Zimbra URL Parameter

    Expected signal: Web server access log showing GET requests to /zimbra/h/compose and /zimbra/h/ with onerror= and onload= patterns in URI query strings, HTTP response codes

  3. Test 3Simulated Session Cookie Exfiltration via XSS in Zimbra (Post-Exploitation)

    Expected signal: Outbound HTTP GET request from Zimbra user's source IP to external attacker-controlled IP containing URL-encoded session token data in the query string; proxy/firewall logs showing unusual outbound connection from Zimbra webmail user IP

  4. Test 4Stored XSS Payload Submission via Zimbra SOAP API

    Expected signal: Zimbra nginx access log showing POST to /service/soap with HTTP 200 response; Zimbra mailbox.log showing CreateContactRequest SOAP operation; POST body (if logged) containing the HTML-encoded XSS payload in the notes field

Unlock Pro Content

Get the full detection package for CVE-2025-48700 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections