XSS refletido (variável JS)

Feb 23 2023
Olá amigos, hoje mostrarei as etapas para detectar uma vulnerabilidade que encontrei nos testes de segurança de aplicativos da Web em meu projeto chamado Saka Reflected XSS (JS Variable) e explorar essa vulnerabilidade. O que é XSS Você pode encontrar informações detalhadas sobre a vulnerabilidade XSS no artigo abaixo.

Olá amigos, hoje mostrarei as etapas para detectar uma vulnerabilidade que encontrei nos testes de segurança de aplicativos da Web em meu projeto chamado Saka Reflected XSS (JS Variable) e explorar essa vulnerabilidade.

O que é XSS

Você pode encontrar informações detalhadas sobre a vulnerabilidade XSS no artigo abaixo.

Executando o aplicativo

Docker

docker pull erdemstar/saka:reflected-xss-js-variable
docker run -d -p 80:80 erdemstar/saka:reflected-xss-js-variable

git clone https://github.com/ErdemStar/Saka
cd reflected-xss-js-variable
- mouse click on reflected-xss-input.sln
- devenv reflected-xss-input.sln (CMD)

Quando abrimos o aplicativo pela primeira vez, uma página como a abaixo nos dá as boas-vindas. Ao pressionar o botão Attack na página, somos direcionados para a parte que iremos testar.

Quando chegamos à página de Ataque, nos deparamos com uma página onde as informações do nome são retiradas do usuário. Quando escrevemos um nome neste campo e o enviamos, obtemos o seguinte resultado.

Solicitação de página de ataque
Resposta da página de ataque

Para dar uma olhada mais de perto no aplicativo, seria útil ver as solicitações recebidas e enviadas por meio do navegador.

Primeira solicitação para lógica de negócios

Notas mentais

  • O valor recebido do usuário é mantido no parâmetro name e enviado através do verbo GET HTTP.
  • O aplicativo exibe o valor que recebe do usuário usando as linhas 72–73–74 da imagem compartilhada acima. O aplicativo exibe os dados para o usuário no campo JS.

Depois de obter informações suficientes sobre o aplicativo, adicionamos alguns caracteres a serem interpretados pelo navegador ao valor do nome que enviaremos para explorar a vulnerabilidade XSS.

Solicitação com payload básico

Quando verificamos o conteúdo da resposta recebida, entendemos que o aplicativo reflete o valor do nome recebido de nós sem nenhuma verificação de segurança.

Aqui, quando os dados recebidos do usuário são adicionados na tag script, eles podem ser explorados com 2 métodos diferentes.

1-Método (Injeção de HTML)

Quando as 73 linhas retornadas em Response são examinadas, o aplicativo usa indiretamente o recurso Javascript inner.html em vez de adicionar e exibir os dados que recebe do usuário diretamente em HTML. Aqui, um ataque XSS pode ser executado quando uma solicitação como a abaixo é lançada.

Solicitação e resposta de ataque
Resultado

2-Método (JS Bypass)

Depois de examinar 73 linhas, uma solicitação com um formato de payload semelhante ao abaixo pode ser enviada e diferentes comandos Javascript podem ser executados dentro da tag script.

<context>";//<payload>

Pedido 1

Nesta fase, o comando JS tornou-se executável diretamente, fazendo uma solicitação simples da seguinte forma.

Pedido 2
Resposta

Obrigado por ler meu artigo, espero que tenha sido útil para você. Abaixo deixo os links dos meus outros conceitos que podem ser úteis para você.

Clique aqui para ver meus outros artigos sobre vulnerabilidades da web. Link