
Cross-Site Scripting (XSS) armazenado autenticado no plugin Contact List
Aviso: Este repositório foi criado apenas para fins educacionais e divulgação ética. A vulnerabilidade foi reportada de forma responsável ao fornecedor e corrigida. Não use estas informações para explorar sistemas sem a devida autorização.
Uma vulnerabilidade de Cross-Site Scripting (XSS) Armazenado foi descoberta no plugin Contact List - Online Staff Directory & Address Book para WordPress (versões <= 3.0.17). Essa vulnerabilidade permite que usuários autenticados com privilégios de Autor ou superiores injetem JavaScript malicioso em cartões de contato por meio de um campo personalizado oculto.
Quando o cartão de contato é renderizado no diretório público, o payload injetado é executado no navegador de qualquer visitante. Se um Administrador visualizar a página, essa falha pode ser escalada para Account Takeover (ATO) total e comprometimento do site.
<= 3.0.17A vulnerabilidade decorre de sanitização inadequada e manipulação insegura da saída do campo personalizado _cl_map_iframe, que tem a finalidade de incorporar iframes de mapas.
1. Armazenamento Inseguro de Dados:
Em includes/class-contact-list-custom-fields.php (dentro de saveCustomFields()), o plugin processa a entrada _cl_map_iframe usando uma expressão regular para extrair um bloco ``
6. Encaminhe a solicitação. O servidor armazena o iframe malicioso.
7. Gatilho: Visite a página do diretório público onde [contact_list] está incorporado. A caixa de alerta será acionada imediatamente, confirmando a execução de código.
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=
Para corrigir esta vulnerabilidade, os desenvolvedores do plugin devem:
wp_kses() com um array estrito de tags HTML e atributos permitidos ao salvar _cl_map_iframe. Não permita atributos como onload, onerror ou URIs javascript:.