Session Hijacking
Last updated
Last updated
As aplicações web modernas utilizam cookies para manter a sessão do usuário durante diferentes sessões de navegação. Isso permite que o usuário faça login apenas uma vez e mantenha sua sessão de login ativa, mesmo que visite o mesmo site em outro horário ou data. No entanto, se um usuário mal-intencionado obtiver os dados do cookie do navegador da vítima, ele poderá obter acesso logado com o usuário da vítima sem conhecer suas credenciais.
Em HTML, podemos escrever código JavaScript dentro das <script>
tags, mas também podemos incluir um script remoto fornecendo sua URL, como segue:
Antes de começarmos a enviar cargas, precisamos iniciar um listener em nossa VM, usando netcat
ou php
conforme mostrado na seção anterior:
Agora podemos começar a testar essas cargas uma por uma usando uma delas para todos os campos de entrada e anexando o nome do campo após nosso IP, conforme mencionado anteriormente, como:
Depois de encontrarmos uma carga XSS funcional e identificarmos o campo de entrada vulnerável, podemos prosseguir para a exploração do XSS e realizar um ataque de sequestro de sessão.
Existem vários payloads JavaScript que podemos usar para capturar o cookie de sessão e enviá-lo para nós, conforme mostrado por :
Usar qualquer uma das duas cargas deve funcionar para nos enviar um cookie, mas usaremos a segunda, pois ela simplesmente adiciona uma imagem à página, que pode não parecer muito maliciosa, enquanto a primeira navega para nosso PHP capturador de cookies página, o que pode parecer suspeito.
Agora, podemos alterar o URL na carga XSS que encontramos anteriormente para usar script.js
( don't forget to replace OUR_IP with your VM IP in the JS script and the XSS payload
):
Com nosso servidor PHP em execução, agora podemos usar o código como parte de nossa carga XSS, enviá-lo no campo de entrada vulnerável e devemos receber uma chamada para nosso servidor com o valor do cookie. No entanto, se houver muitos cookies, poderemos não saber qual valor de cookie pertence a qual cabeçalho de cookie. Assim, podemos escrever um script PHP para dividi-los com uma nova linha e gravá-los em um arquivo. Nesse caso, mesmo que várias vítimas acionem a exploração XSS, obteremos todos os seus cookies ordenados em um arquivo.
Podemos salvar o seguinte script PHP como index.php
e executar novamente o servidor PHP:
Agora, esperamos que a vítima visite a página vulnerável e visualize nossa carga XSS. Assim que o fizerem, receberemos duas solicitações em nosso servidor, uma para script.js
, que por sua vez fará outra solicitação com o valor do cookie: