
Eine gespeicherte Cross-Site-Scripting-Schwachstelle (Stored XSS) ist in Issabel PBX Version 4.0.0-6 vorhanden. Dadurch kann ein authentifizierter Angreifer beliebigen JavaScript- oder HTML-Code über die Eingabefelder „Gruppe“ und „Beschreibung“ einschleusen, die unter System → Benutzer → Gruppen zu finden sind.
| Feld | Details |
|---|
| CVE-ID | CVE-2023-37191 |
| Produkt | Issabel PBX (issabel-pbx) |
| Betroffene Version | 4.0.0-6 |
| Schwachstellentyp | Stored Cross-Site Scripting (XSS) |
| Schweregrad | Mittel |
| Entdeckungsdatum | 7. Juli 2023 |
| Entdeckt von | Sahil Ojha |
| Hersteller-Website | https://www.issabel.org/ |
| Quellcode | https://github.com/IssabelFoundation/issabelPBX |
| Getestet auf | Windows |
In Issabel PBX Version 4.0.0-6 besteht eine Stored-Cross-Site-Scripting-Schwachstelle (XSS). Die Anwendung bereinigt oder kodiert vom Benutzer bereitgestellte Eingaben nicht ordnungsgemäß, bevor sie in der Datenbank gespeichert und später im Browser gerendert werden. Dadurch kann ein authentifizierter Angreifer beliebigen JavaScript- oder HTML-Code über die Eingabefelder Group und Description unter System → Users → Groups einschleusen.
Sobald die schädliche Nutzlast gespeichert ist, wird sie dauerhaft auf dem Server abgelegt. Jedes Mal, wenn ein Benutzer (einschließlich Administratoren) die betroffene Seite besucht, wird das injizierte Skript automatisch in seiner Browsersitzung ausgeführt – ohne dass der Angreifer weitere Aktionen durchführen muss. Genau das unterscheidet ein Stored (persistentes) XSS von einem Reflected XSS; die Auswirkungen sind größer und gefährlicher, da die Nutzlast alle Besucher der Seite betrifft.
System → Users → Groups der Issabel-PBX-WeboberflächeGroup (Namensfeld) und Description (Textfeld)Eine erfolgreiche Ausnutzung dieser Schwachstelle kann einem Angreifer Folgendes ermöglichen:
Da die Nutzlast auf dem Server gespeichert ist, ist jeder Benutzer betroffen, der die kompromittierte Seite besucht – der Schaden ist im Vergleich zu einem Reflected-XSS-Angriff deutlich größer.
Schritt 1: Melden Sie sich mit Administrator-Anmeldedaten an der Issabel-PBX-Weboberfläche an.
Schritt 2: Navigieren Sie zu System → Users → Groups. Geben Sie in die Eingabefelder Group und/oder Description die folgende XSS-Nutzlast ein:
"><script>alert(1)</script>
Die Felder sollten ähnlich wie im folgenden Screenshot aussehen:

Schritt 3: Klicken Sie auf Speichern. Die Nutzlast wird nun dauerhaft in der Datenbank der Anwendung gespeichert.
Schritt 4: Navigieren Sie zurück zur Seite System → Users → Groups (oder lassen Sie einen anderen Benutzer sie besuchen). Das injizierte Skript wird automatisch im Browser ausgeführt, wie unten gezeigt:

Um diese Schwachstelle zu entschärfen, sollte das Issabel-PBX-Entwicklungsteam die folgenden Korrekturen anwenden:
Eingabevalidierung: Validieren Sie alle vom Benutzer bereitgestellten Eingaben streng serverseitig. Lehnen Sie Werte, die HTML-Sonderzeichen (<, >, ", ', &) enthalten, in Feldern, die keine HTML-Formatierung erfordern, ab oder bereinigen Sie diese.
Ausgabekodierung: Wenden Sie beim Rendern gespeicherter Daten im Browser eine kontextabhängige Ausgabekodierung (z. B. HTML-Entity-Kodierung) an, um injiziertes Markup zu neutralisieren. Da Issabel PBX auf PHP basiert, verwenden Sie die in PHP integrierten Funktionen htmlspecialchars() oder htmlentities() anstelle einer eigenen Filterung.
Content Security Policy (CSP): Implementieren Sie einen strengen Content-Security-Policy-HTTP-Header, um die Quellen einzuschränken, von denen Skripte ausgeführt werden können. Eine ordnungsgemäß konfigurierte CSP kann verhindern, dass injizierte Skripte ausgeführt werden, selbst wenn die Eingabebereinigung umgangen wird.
Regelmäßige Sicherheitsaudits: Führen Sie regelmäßige Code-Reviews und Penetrationstests durch, um Injection-Schwachstellen in der gesamten Anwendung zu identifizieren und zu beheben.
Diese Informationen werden ausschließlich zu Bildungs- und Forschungszwecken bereitgestellt. Der Autor ist nicht für eine missbräuchliche Verwendung dieser Informationen verantwortlich. Holen Sie vor dem Testen von Schwachstellen an einem System, das Ihnen nicht gehört, immer eine ordnungsgemäße schriftliche Genehmigung ein.