CVE-2025-2609

8.2 HIGH

📋 TL;DR

An unauthenticated cross-site scripting (XSS) vulnerability in MagnusBilling's login logging component allows attackers to inject malicious HTML/JavaScript into viewable logs. This affects all MagnusBilling installations through version 7.3.0, potentially compromising administrator sessions and system integrity.

💻 Affected Systems

Products:
  • MagnusSolution MagnusBilling
Versions: through 7.3.0
Operating Systems: All platforms running MagnusBilling
Default Config Vulnerable: ⚠️ Yes
Notes: All default installations are vulnerable. The vulnerability exists in the log viewing component accessible at /mbilling/index.php/logUsers/read.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers steal administrator session cookies, gain full administrative access to the billing system, and potentially pivot to internal networks or compromise customer data.

🟠

Likely Case

Session hijacking of administrators leading to unauthorized access, data theft, or manipulation of billing systems and customer records.

🟢

If Mitigated

Limited to defacement or nuisance attacks if proper input validation and output encoding are implemented elsewhere.

🌐 Internet-Facing: HIGH - The vulnerable endpoint is accessible without authentication and can be exploited remotely.
🏢 Internal Only: MEDIUM - While less exposed, internal attackers or compromised internal systems could still exploit this vulnerability.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires no authentication and involves simple HTML/JavaScript injection into log entries that are then rendered when viewed.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version after commit f0f083c76157e31149ae58342342fb1bf1629e22

Vendor Advisory: https://github.com/magnussolution/magnusbilling7/commit/f0f083c76157e31149ae58342342fb1bf1629e22

Restart Required: No

Instructions:

1. Update MagnusBilling to the latest version. 2. Apply the specific commit f0f083c76157e31149ae58342342fb1bf1629e22 if not updating fully. 3. Verify the fix by checking that MagnusLog.php properly sanitizes input.

🔧 Temporary Workarounds

Restrict access to log viewing

all

Block unauthenticated access to the vulnerable endpoint using web server or application firewall rules.

# Apache: RewriteRule ^/mbilling/index\.php/logUsers/read - [F]
# Nginx: location ~ /mbilling/index\.php/logUsers/read { deny all; }

Implement Content Security Policy

all

Add CSP headers to prevent execution of injected scripts.

# Add to web server config: Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
# Or in PHP: header("Content-Security-Policy: default-src 'self'; script-src 'self'");

🧯 If You Can't Patch

  • Implement strict input validation and output encoding in the MagnusLog.php component manually.
  • Deploy a web application firewall (WAF) with XSS protection rules to block exploitation attempts.

🔍 How to Verify

Check if Vulnerable:

Test by attempting to inject HTML/JavaScript into login attempts and checking if it renders in /mbilling/index.php/logUsers/read.

Check Version:

Check MagnusBilling version in admin panel or review source code for MagnusLog.php modifications.

Verify Fix Applied:

Verify that injected HTML/JavaScript appears as plain text rather than executed code in the log viewer.

📡 Detection & Monitoring

Log Indicators:

  • Unusual HTML or script tags in MagnusBilling logs
  • Multiple failed login attempts with suspicious payloads

Network Indicators:

  • HTTP POST requests to login endpoint with HTML/JavaScript payloads
  • Requests to /mbilling/index.php/logUsers/read from unexpected sources

SIEM Query:

source="magnusbilling" AND (message="<script" OR message="javascript:" OR message="onerror=" OR message="onload=")

🔗 References

📤 Share & Export