
Esiste una vulnerabilità di Cross-Site Scripting (XSS) persistente in Issabel PBX versione 4.0.0-6. Questa consente a un utente autenticato di iniettare codice JavaScript o HTML arbitrario tramite i campi di input Group e Description situati in System → Users → Groups.
| Campo | Dettagli |
|---|---|
| CVE ID | CVE-2023-37191 |
| Prodotto | Issabel PBX (issabel-pbx) |
| Versione interessata | 4.0.0-6 |
| Tipo di vulnerabilità | Cross-Site Scripting (XSS) Memorizzato |
| Gravità | Media |
| Data di scoperta | 7 luglio 2023 |
| Scoperta da | Sahil Ojha |
| Homepage del fornitore | https://www.issabel.org/ |
| Codice sorgente | https://github.com/IssabelFoundation/issabelPBX |
| Testato su | Windows |
Esiste una vulnerabilità di Cross-Site Scripting (XSS) Memorizzato in Issabel PBX versione 4.0.0-6. L'applicazione non sanifica né codifica correttamente l'input fornito dall'utente prima di salvarlo nel database e successivamente renderizzarlo nel browser. Ciò consente a un attaccante autenticato di iniettare codice JavaScript o HTML arbitrario tramite i campi di input Group e Description presenti in System → Users → Groups.
Una volta salvato, il payload dannoso viene memorizzato in modo persistente sul server. Ogni volta che un utente (inclusi gli amministratori) visita la pagina interessata, lo script iniettato viene eseguito automaticamente nella sessione del browser — senza richiedere alcuna ulteriore azione da parte dell'attaccante. Questo è ciò che distingue uno XSS Memorizzato (Persistente) da uno XSS Riflesso; l'impatto è più ampio e più pericoloso perché il payload colpisce tutti i visitatori della pagina.
System → Users → Groups dell'interfaccia web di Issabel PBXGroup (campo nome) e Description (campo testo)Lo sfruttamento riuscito di questa vulnerabilità può consentire a un attaccante di:
Poiché il payload è memorizzato sul server, ogni utente che visita la pagina compromessa è colpito — amplificando il danno rispetto a un attacco XSS riflesso.
Passaggio 1: Accedi all'interfaccia web di Issabel PBX utilizzando le credenziali di amministratore.
Passaggio 2: Naviga su System → Users → Groups. Nei campi di input Group e/o Description, inserisci il seguente payload XSS:
"><script>alert(1)</script>
I campi dovrebbero apparire simili allo screenshot qui sotto:

Passaggio 3: Fai clic su Save. Il payload è ora memorizzato in modo persistente nel database dell'applicazione.
Passaggio 4: Torna alla pagina System → Users → Groups (o fai in modo che un altro utente la visiti). Lo script iniettato viene eseguito automaticamente nel browser, come mostrato di seguito:

Per mitigare questa vulnerabilità, il team di sviluppo di Issabel PBX dovrebbe applicare le seguenti correzioni:
Validazione dell'input: Validare rigorosamente tutto l'input fornito dall'utente lato server. Rifiutare o sanificare i valori che contengono caratteri speciali HTML (<, >, ", ', &) nei campi che non richiedono formattazione HTML.
Codifica dell'output: Quando si renderizzano i dati memorizzati nel browser, applicare una codifica dell'output sensibile al contesto (ad esempio, la codifica delle entità HTML) per neutralizzare qualsiasi markup iniettato. Poiché Issabel PBX è basato su PHP, utilizzare le funzioni integrate di PHP htmlspecialchars() o htmlentities() invece di filtri personalizzati.
Content Security Policy (CSP): Implementare un'intestazione HTTP Content Security Policy rigorosa per limitare le fonti da cui gli script possono essere eseguiti. Una CSP configurata correttamente può impedire l'esecuzione degli script iniettati anche se la sanificazione dell'input viene aggirata.
Audit di sicurezza regolari: Condurre revisioni periodiche del codice e test di penetrazione per identificare e correggere le vulnerabilità di iniezione nell'intera applicazione.
Queste informazioni sono fornite solo a scopo educativo e di ricerca. L'autore non è responsabile per qualsiasi uso improprio di queste informazioni. Ottenere sempre la dovuta autorizzazione scritta prima di testare vulnerabilità su qualsiasi sistema che non si possiede.