
Cross-Site Scripting (XSS) persistente autenticato nel plugin Contact List
Disclaimer: Questo repository è creato solo a scopo educativo e per divulgazione etica. La vulnerabilità è stata segnalata in modo responsabile al fornitore ed è stata corretta. Non utilizzare queste informazioni per sfruttare sistemi senza la dovuta autorizzazione.
È stata scoperta una vulnerabilità di Cross-Site Scripting (XSS) Memorizzato nel plugin WordPress Contact List - Online Staff Directory & Address Book (versioni <= 3.0.17). Questa vulnerabilità consente a utenti autenticati con privilegi di Autore (Author) o superiori di iniettare JavaScript dannoso nelle schede di contatto tramite un campo personalizzato nascosto.
Quando la scheda di contatto viene visualizzata nella directory pubblica, il payload iniettato viene eseguito nel browser di qualsiasi visitatore. Se un Amministratore visualizza la pagina, questa falla può essere sfruttata fino alla completa Compromissione dell'Account (ATO) e del sito.
<= 3.0.17La vulnerabilità deriva da una sanitizzazione impropria e da una gestione non sicura dell'output del campo personalizzato _cl_map_iframe, progettato per incorporare iframe di mappe.
1. Archiviazione Dati Non Sicura:
In includes/class-contact-list-custom-fields.php (all'interno di saveCustomFields()), il plugin elabora l'input _cl_map_iframe utilizzando un'espressione regolare per estrarre un blocco ```
6. Inoltra la richiesta. Il server memorizza l'iframe dannoso.
7. Attivazione: Visita la pagina della directory pubblica dove è incorporato [contact_list]. La finestra di avviso si attiverà immediatamente, confermando l'esecuzione del codice.
POST /wp-admin/post.php HTTP/1.1
Host: TARGET
Content-Type: application/x-www-form-urlencoded
Cookie: [Author_Session_Cookies]
post_title=Hacked+Contact&post_type=contact&action=editpost&_cl_map_iframe=
Per correggere questa vulnerabilità, gli sviluppatori del plugin devono:
wp_kses() con un array rigoroso di tag HTML e attributi consentiti quando si salva _cl_map_iframe. Disabilitare attributi come onload, onerror o URI javascript:.