Clickjacking
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest para construir e automatizar fluxos de trabalho facilmente com as ferramentas da comunidade mais avançadas do mundo. Acesse hoje:
Em um ataque de clickjacking, um usuário é enganado a clicar em um elemento em uma página da web que é invisível ou disfarçado como um elemento diferente. Essa manipulação pode levar a consequências indesejadas para o usuário, como o download de malware, redirecionamento para páginas web maliciosas, fornecimento de credenciais ou informações sensíveis, transferências de dinheiro ou a compra online de produtos.
À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 útil de clickjacking para que o usuário pressione o botão Enviar.
Se você precisa que o usuário preencha um formulário, mas não quer pedir diretamente que ele escreva algumas informações específicas (como o e-mail e ou senha específica que você conhece), você pode apenas pedir que ele Arraste&Solte algo que escreverá seus dados controlados, como neste exemplo.
Se você identificou um ataque XSS que requer que um usuário clique em algum elemento para disparar o XSS e a página é vulnerável a 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 definir e ler). A página com o formulário para definir esses detalhes é vulnerável a Clickjacking e você pode preencher o formulário com os parâmetros GET. __Um atacante poderia preparar um ataque de Clickjacking para essa página preenchendo o formulário com a carga útil XSS e enganando o usuário a enviar o formulário. Assim, quando o formulário é enviado e os valores são modificados, o usuário executará o XSS.
Scripts executados no lado do cliente podem realizar ações para prevenir Clickjacking:
Garantir que a janela da aplicação seja a principal ou a janela superior.
Tornar todos os frames visíveis.
Prevenir cliques em frames invisíveis.
Detectar e alertar os usuários sobre possíveis tentativas de Clickjacking.
No entanto, esses scripts de quebra de frame 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 a JavaScript.
Atributo sandbox
do iframe HTML5: Um atacante pode neutralizar scripts de quebra de frame definindo o atributo sandbox
com valores allow-forms
ou allow-scripts
sem allow-top-navigation
. Isso impede que o iframe verifique se é a janela superior, e.g.,
The allow-forms
e allow-scripts
valores 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 do console do navegador podem guiar quais permissões permitir.
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 Clickjacking:
X-Frame-Options: deny
- Nenhum domínio pode emoldurar o conteúdo.
X-Frame-Options: sameorigin
- Somente o site atual pode emoldurar o conteúdo.
X-Frame-Options: allow-from https://trusted.com
- Somente o 'uri' especificado pode emoldurar a página.
Note as limitações: se o navegador não suportar esta diretiva, pode não funcionar. Alguns navegadores preferem a diretiva CSP frame-ancestors.
A diretiva frame-ancestors
na CSP é o método recomendado para proteção contra Clickjacking:
frame-ancestors 'none'
- Semelhante a X-Frame-Options: deny
.
frame-ancestors 'self'
- Semelhante a X-Frame-Options: sameorigin
.
frame-ancestors trusted.com
- Semelhante a X-Frame-Options: allow-from
.
Por exemplo, a seguinte CSP permite apenas emoldurar do mesmo domínio:
Content-Security-Policy: frame-ancestors 'self';
Mais detalhes e exemplos complexos podem ser encontrados na documentação frame-ancestors CSP e na documentação frame-ancestors da Mozilla.
child-src
e frame-src
A Content Security Policy (CSP) é uma medida de segurança que ajuda a prevenir Clickjacking e outros ataques de injeção de código, especificando quais fontes o navegador deve permitir para carregar conteúdo.
frame-src
Define fontes válidas para frames.
Mais específica do que a diretiva default-src
.
Esta política permite frames da mesma origem (self) e https://trusted-website.com.
child-src
Introduzida no nível 2 do CSP para definir fontes válidas para web workers e frames.
Funciona 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:
Depreciação: child-src está sendo descontinuado em favor de frame-src e worker-src.
Comportamento de Fallback: Se frame-src estiver ausente, child-src é usado como um fallback para frames. Se ambos estiverem ausentes, default-src é usado.
Definição Estrita de Fonte: Inclua apenas fontes confiáveis nas diretrizes para evitar exploração.
Embora não sejam completamente infalíveis, scripts de quebra de frame baseados em JavaScript podem ser usados para evitar que uma página da web seja emoldurada. Exemplo:
Validação de Token: Use 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 através de uma página Clickjacked.
Use Trickest para construir e automatizar fluxos de trabalho facilmente com as ferramentas comunitárias mais avançadas do mundo. Acesse hoje:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)