
Ataque XSS no Atlassian Jira via Server Side Request Forgery (SSRF).
SSRF & XSS
https://jira.you.com//plugins/servlet/oauth/users/icon-uri?consumerUri=http://www.google.co.uk
O IconUriServlet do plugin Atlassian OAuth da versão 1.3.0 anterior à versão 1.9.12 e da versão 2.0.0 anterior à versão 2.0.4 permite que atacantes remotos acessem o conteúdo de recursos internos da rede e/ou realizem um ataque XSS via Server Side Request Forgery (SSRF).
De acordo com o Atlassian Jira, as seguintes versões são vulneráveis:
Em um ataque de Server-Side Request Forgery (SSRF), o atacante pode abusar da funcionalidade do servidor para ler ou atualizar recursos internos. O atacante pode fornecer ou modificar uma URL que o código em execução no servidor irá ler ou enviar dados, e, ao selecionar cuidadosamente as URLs, o atacante pode ser capaz de ler a configuração do servidor, como metadados da AWS, conectar-se a serviços internos, como bancos de dados habilitados para HTTP, ou realizar requisições POST para serviços internos que não deveriam estar expostos.
O aplicativo alvo pode ter uma funcionalidade para importar dados de uma URL, publicar dados em uma URL ou, de outra forma, ler dados de uma URL que pode ser manipulada. O atacante modifica as chamadas a essa funcionalidade fornecendo uma URL completamente diferente ou manipulando como as URLs são construídas (path traversal, etc.).
Quando a requisição manipulada chega ao servidor, o código do lado do servidor captura a URL manipulada e tenta ler dados para a URL manipulada. Ao selecionar URLs alvo, o atacante pode ser capaz de ler dados de serviços que não estão diretamente expostos na internet:
Metadados do servidor em nuvem - Serviços de nuvem como AWS fornecem uma interface REST em http://169.254.169.254/latest/meta-data/ onde configurações importantes e, às vezes, chaves de autenticação podem ser extraídas
Interfaces HTTP de bancos de dados - Bancos de dados NoSQL como MongoDB fornecem interfaces REST em portas HTTP. Docker e Kubernetes - se as portas locais estiverem expostas internamente, um atacante pode criar/excluir pods e contêineres e recuperar outros segredos.
Se o banco de dados for esperado para estar disponível apenas internamente, a autenticação pode estar desabilitada e o atacante pode extrair dados Interfaces REST internas
Arquivos - O atacante pode ser capaz de ler arquivos usando URIs file:// O atacante também pode usar essa funcionalidade para importar dados não confiáveis para um código que espera ler dados apenas de fontes confiáveis e, assim, contornar a validação de entrada.