Clickjacking
Use Trickest para construir e automatizar fluxos de trabalho facilmente com as ferramentas comunitárias mais avançadas do mundo. Acesse hoje:
O que é Clickjacking
Em um ataque de clickjacking, um usuário é enganado para clicar em um elemento em uma página da web que está invisível ou disfarçado como um elemento diferente. Essa manipulação pode levar a consequências não intencionais para o usuário, como o download de malware, redirecionamento para páginas da web maliciosas, fornecimento de credenciais ou informações sensíveis, transferências de dinheiro ou a compra online de produtos.
Truque de pré-preenchimento de formulários
Às vezes é possível preencher o valor dos campos de um formulário usando parâmetros GET ao carregar uma página. Um atacante pode abusar desse comportamento para preencher um formulário com dados arbitrários e enviar a carga de clickjacking para que o usuário pressione o botão Enviar.
Preencher formulário com Arrastar e Soltar
Se você precisa que o usuário preencha um formulário mas não quer pedir diretamente a ele para escrever algumas informações específicas (como o e-mail e/ou senha específica que você conhece), você pode simplesmente pedir a ele para Arrastar e Soltar algo que escreverá seus dados controlados como neste exemplo.
Payload Básico
Payload de vários passos
Arrastar e Soltar + Clique payload
XSS + Clickjacking
Se você identificou um ataque XSS que requer que um usuário clique em algum elemento para acionar o XSS e a página é vulnerável ao clickjacking, você pode abusar disso para enganar o usuário a clicar no botão/link. Exemplo: Você encontrou um self XSS em alguns detalhes privados da conta (detalhes que apenas você pode configurar e ler). A página com o formulário para configurar esses detalhes é vulnerável ao Clickjacking e você pode pré-preencher o formulário com os parâmetros GET. __Um atacante poderia preparar um ataque de Clickjacking para essa página pré-preenchendo o formulário com o payload XSS e enganando o usuário a enviar o formulário. Assim, quando o formulário for enviado e os valores forem modificados, o usuário executará o XSS.
Estratégias para Mitigar o Clickjacking
Defesas do Lado do Cliente
Scripts executados no lado do cliente podem realizar ações para prevenir o Clickjacking:
Garantir que a janela da aplicação seja a janela principal ou superior.
Tornar todos os frames visíveis.
Impedir cliques em frames invisíveis.
Detectar e alertar os usuários sobre possíveis tentativas de Clickjacking.
No entanto, esses scripts de quebra de frames podem ser contornados:
Configurações de Segurança dos Navegadores: Alguns navegadores podem bloquear esses scripts com base em suas configurações de segurança ou falta de suporte ao JavaScript.
Atributo
sandbox
do iframe HTML5: Um atacante pode neutralizar scripts de quebra de frames definindo o atributosandbox
com os valoresallow-forms
ouallow-scripts
semallow-top-navigation
. Isso impede que o iframe verifique se é a janela superior, por exemplo,
Os valores allow-forms
e allow-scripts
permitem ações dentro do iframe enquanto desabilitam a navegação de nível superior. Para garantir a funcionalidade pretendida do site alvo, permissões adicionais como allow-same-origin
e allow-modals
podem ser necessárias, dependendo do tipo de ataque. Mensagens no console do navegador podem orientar sobre quais permissões permitir.
Defesas do Lado do Servidor
X-Frame-Options
O cabeçalho de resposta HTTP **X-Frame-Options
informa aos navegadores sobre a legitimidade de renderizar uma página em um <frame>
ou <iframe>
, ajudando a prevenir o Clickjacking:
X-Frame-Options: deny
- Nenhum domínio pode enquadrar o conteúdo.X-Frame-Options: sameorigin
- Apenas o site atual pode enquadrar o conteúdo.X-Frame-Options: allow-from https://trusted.com
- Apenas o 'uri' especificado pode enquadrar a página.Observe as limitações: se o navegador não suportar essa diretiva, ela pode não funcionar. Alguns navegadores preferem a diretiva CSP frame-ancestors.
Diretiva frame-ancestors da Política de Segurança de Conteúdo (CSP)
A diretiva frame-ancestors
na CSP é o método recomendado para proteção contra Clickjacking:
frame-ancestors 'none'
- Semelhante aX-Frame-Options: deny
.frame-ancestors 'self'
- Semelhante aX-Frame-Options: sameorigin
.frame-ancestors trusted.com
- Semelhante aX-Frame-Options: allow-from
.
Por exemplo, a CSP a seguir permite apenas o enquadramento do mesmo domínio:
Content-Security-Policy: frame-ancestors 'self';
Detalhes adicionais e exemplos complexos podem ser encontrados na documentação da CSP frame-ancestors e na documentação da CSP frame-ancestors da Mozilla.
Política de Segurança de Conteúdo (CSP) com child-src
e frame-src
child-src
e frame-src
A Política de Segurança de Conteúdo (CSP) é uma medida de segurança que ajuda a prevenir o Clickjacking e outros ataques de injeção de código, especificando quais fontes o navegador deve permitir carregar conteúdo.
Diretiva frame-src
frame-src
Define fontes válidas para frames.
Mais específico do que a diretiva
default-src
.
Este política permite frames da mesma origem (self) e https://trusted-website.com.
Diretiva child-src
child-src
Introduzida no nível 2 do CSP para definir fontes válidas para workers e frames da web.
Age como um fallback para frame-src e worker-src.
Esta política permite frames e workers da mesma origem (self) e https://trusted-website.com.
Notas de Uso:
Descontinuação: child-src está sendo gradualmente substituído por frame-src e worker-src.
Comportamento de Reserva: Se frame-src estiver ausente, child-src é usado como reserva para frames. Se ambos estiverem ausentes, default-src é usado.
Definição Estrita de Fonte: Inclua apenas fontes confiáveis nas diretivas para evitar exploração.
Scripts JavaScript de Quebra de Frames
Embora não seja totalmente à prova de falhas, scripts de quebra de frames baseados em JavaScript podem ser usados para evitar que uma página da web seja enquadrada. Exemplo:
Utilizando Tokens Anti-CSRF
Validação de Token: Utilize tokens anti-CSRF em aplicações web para garantir que solicitações que alteram o estado sejam feitas intencionalmente pelo usuário e não por meio de uma página com Clickjacking.
Referências
Use Trickest para construir e automatizar fluxos de trabalho facilmente com as ferramentas comunitárias mais avançadas do mundo. Tenha Acesso Hoje:
Last updated