Segurança

Execução de um ataque de falsificação de solicitação entre sites

Execução de um ataque de falsificação de solicitação entre sites
Um ataque CSRF é aquele que faz com que usuários autenticados executem ações indesejadas no aplicativo da web com o qual são autenticados. Isso é feito por meio de um site externo que o usuário visita e que aciona essas ações.

Neste artigo, você obterá as informações necessárias do aplicativo para saber o que o site invasor deve fazer para enviar solicitações válidas ao servidor vulnerável. Em seguida, você criará uma página que simula as solicitações legítimas e induz o usuário a visitar essa página enquanto está autenticado. Você também fará algumas iterações na prova de conceito básica para torná-la mais parecida com um ataque do mundo real, onde a vítima não percebe. Observe que o arquivo de código deste artigo pode ser encontrado no github do autor.

Preparando-se

Você precisará de uma conta de usuário válida no BodgeIt para este artigo. Este artigo usa [email protegido] como a 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 do Burp Suite ou outro proxy configurado no navegador:

  1. Faça login no BodgeIt como qualquer usuário e clique no nome de usuário para ir para o perfil.
  2. Faça uma alteração de senha. Veja a aparência da solicitação no proxy:

    Então, é um PUBLICAR pedido para http: // 192.168.56.11 / bodgeit / senha.jsp, e possui apenas a senha e sua confirmação no corpo.

  3. Tente fazer uma página HTML muito simples que replique esta solicitação. Crie um arquivo (nomeie-o csrf-mudar-senha.html) com os seguintes conteúdos:







  4. Agora, carregue este arquivo no mesmo navegador da sua sessão de login:
  5. Clique em enviar e você será redirecionado para a página de perfil do usuário. Ele dirá que a senha foi atualizada com sucesso.
  6. Embora isso comprove o ponto, um site externo (ou uma página HTML local, como neste caso) pode executar uma solicitação de alteração de senha no aplicativo. Ainda é improvável que um usuário clique no Enviar Você pode automatizar e ocultar os campos de entrada para que o conteúdo malicioso seja escondido. Agora, faça uma nova página com base na anterior; chame-o com script csrf-change-password.html:


    Uma página completamente inofensiva


    Você pode confiar nesta página.
    Nada de ruim vai acontecer com você ou sua conta BodgeIt.





    Desta vez, o formulário possui um parâmetro de ID e há um script na página que enviará seu conteúdo quando a página estiver totalmente carregada.

  7.  Se você carregar esta página no mesmo navegador em que iniciou uma sessão BodgeIt, ele enviará automaticamente a solicitação e a página de perfil do usuário será exibida em seguida. Na captura de tela a seguir, o navegador Depuradordefina um ponto de interrupção pouco antes de a solicitação ser feita:
  8. Esta última tentativa parece melhor do ponto de vista de um invasor. Você só precisa que a vítima carregue a página e a solicitação será enviada automaticamente, mas então a vítima verá o Sua senha foi mudadamensagem, e isso certamente levantará um alerta.
  9. Você pode melhorar ainda mais a página de ataque, fazendo-a carregar a resposta em um quadro invisível dentro da mesma página. Existem muitas maneiras de fazer isso; um rápido e sujo é definir um tamanho 0 para o quadro. Seu arquivo ficaria assim:


    Uma página completamente inofensiva


    Você pode confiar nesta página.
    Nada de ruim vai acontecer com você ou sua conta BodgeIt.
    target = "target_frame">





    Observe como a propriedade alvo do formulário é o iframe definido logo abaixo dele e que tal moldura tem 0% de altura e largura.

  10. Carregue a nova página no navegador onde a sessão foi iniciada. Esta captura de tela mostra a aparência da página ao ser inspecionada com o navegador Ferramentas de desenvolvimento: Observe que o objeto iframe é apenas uma linha preta na página e, no Inspector, você pode ver que ele contém a página de perfil do usuário BodgeIt.
  11. Se você analisar as comunicações de rede realizadas por sua página CSRF, poderá ver que ela realmente faz solicitações para alterar a senha do BodgeIt:

Como funciona…

Quando você envia uma solicitação de um navegador e já tem um cookie pertencente ao domínio de destino armazenado, o navegador anexará o cookie à solicitação antes que ele seja enviado. Isso é o que torna os cookies tão convenientes como 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 irá 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 ao domínio onde a sessão é iniciada.

Se o servidor não verificar se as solicitações que recebe são realmente originadas do aplicativo, ele permite que um site malicioso faça chamadas em nome de usuários legítimos e ativos que visitam este site malicioso enquanto autenticados no domínio de destino.

Em um teste de penetração de aplicativo 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 ser parte de outro trabalho, como um exercício de engenharia social ou equipe vermelha. Neste caso, algum esforço extra será necessário para evitar que o usuário vítima suspeite que algo está acontecendo.

Neste artigo, você usou 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 alteração da senha, portanto, a vítima nunca vê a mensagem de que sua senha foi alterada.

Se você achou este artigo interessante, você pode explorar Livro de receitas de teste de penetração da Web do Kali Linux - segunda edição para descobrir as vulnerabilidades da web mais comuns e evitar que se tornem uma ameaça à segurança do seu site. Livro de receitas de teste de penetração da Web do Kali Linux - segunda edição oferece as habilidades de que você precisa para cobrir todas as fases de um teste de penetração - desde a coleta de informações sobre o sistema e o aplicativo até a identificação de vulnerabilidades por meio de testes manuais.

OpenTTD vs Simutrans
Criar sua própria simulação de transporte pode ser divertido, relaxante e extremamente atraente. É por isso que você precisa ter certeza de experiment...
Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...