Neste artigo, você obterá as informações necessárias do aplicativo para saber o que o site de ataque deve fazer para enviar solicitações válidas ao servidor vulnerável. Em seguida, você criará uma página que simula os pedidos legítimos e trata o usuário a visitar essa página enquanto autenticado. Você também fará algumas iterações sobre a prova básica de conceito para fazer com que pareça mais um ataque do mundo real, onde a vítima não percebe. Observe que o arquivo de código para este artigo pode ser encontrado no Github do autor.
Você precisará de uma conta de usuário válida no Bodgeit para este artigo. Este artigo usa usuá[email protected]
Como vítima:
Como fazer isso…
Primeiro, você precisa analisar a solicitação que deseja forçar a vítima a fazer. Para fazer isso, você precisa de suíte de burp ou outro proxy configurado no navegador:
Então, é um PUBLICAR
solicitação para http: // 192.168.56.11/bodgeit/senha.JSP,
e tem apenas a senha e sua confirmação no corpo.
CSRF-troca-passanha.html
) com o seguinte conteúdo: CSRF-troca-password-script.html
: Desta vez, o formulário possui um parâmetro de identificação e há um script na página que enviará seu conteúdo quando a página for carregada completamente.
Observe como a propriedade alvo do formulário é o iframe definido logo abaixo dele e que esse quadro tem 0%de altura e largura.
Quando você envia uma solicitação de um navegador e já tem um cookie pertencente ao domínio alvo armazenado, o navegador anexará o cookie à solicitação antes de ser enviada. É isso que torna os cookies tão convenientes quanto os identificadores de sessão, mas essa característica de como o HTTP funciona também é o que o torna vulnerável a um ataque como o que você viu neste artigo.
Quando você carrega uma página no mesmo navegador, onde você tem uma sessão ativa em um aplicativo, o navegador anexará automaticamente o cookie de sessão a essa solicitação. Isso acontece mesmo se for uma guia ou janela diferente, e esta página faz uma solicitação para o domínio onde a sessão é iniciada.
Se o servidor não verificar se as solicitações que ele recebe realmente se originou dentro do aplicativo, ele permite que um site malicioso faça chamadas em nome de usuários ativos legítimos que visitam este site malicioso enquanto autenticados ao domínio de destino.
Em um teste de penetração de aplicativos da web, o primeiro código que você usou, aquele com os dois campos de texto e o Enviar Botão, pode ser suficiente para demonstrar a presença de uma falha de segurança. No entanto, o teste de penetração do aplicativo pode fazer parte de outro engajamento, como um exercício de engenharia social ou equipe vermelha. Nesse caso, será necessário algum esforço extra para impedir que o usuário da vítima suspeite que algo está acontecendo.
Neste artigo, você usou o JavaScript para automatizar o envio da solicitação, definindo o evento Onload na página e executando o método de envio do formulário na função de manipulador de eventos. Você também usou um iframe oculto para carregar a resposta da mudança de senha; portanto, a vítima nunca vê a mensagem de que sua senha alterou.
Se você achou este artigo interessante, pode explorar Kali Linux Web Penetration Testing Book - Segunda Edição Para descobrir as vulnerabilidades da web mais comuns e impedi -las de se tornarem uma ameaça à segurança do seu site. Kali Linux Web Penetration Testing Book - Segunda Edição fornece as habilidades necessárias para cobrir todas as etapas de um teste de penetração - desde a coleta de informações sobre o sistema e aplicação até a identificação de vulnerabilidades por meio de testes manuais.