# Clickjacking
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
\ Use [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) para construir e **automatizar fluxos de trabalho** com as ferramentas comunitárias mais avançadas do mundo.\ Obtenha acesso hoje: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## O que é Clickjacking Clickjacking é um ataque que **enganar** um **usuário** para **clicar** em um **elemento** de uma página da web que é **invisível** ou disfarçado como outro elemento. Isso pode fazer com que os usuários inadvertidamente baixem malware, acessem páginas da web maliciosas, forneçam credenciais ou informações sensíveis, transfiram dinheiro ou comprem produtos online. (De [aqui](https://www.imperva.com/learn/application-security/clickjacking/)). ### Truque de preencher 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 útil 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**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). ### Payload básico ```markup
Click me
``` ### Carga Única em Vários Passos Clickjacking attacks can be made more effective by using a multistep payload. In a multistep payload, the attacker divides the malicious action into multiple steps, each triggered by a separate click event. This technique can help bypass certain security measures that may be in place to detect and prevent clickjacking attacks. To implement a multistep payload, the attacker first identifies the target action they want to perform on the victim's behalf. This could be anything from submitting a form to making a purchase. The attacker then breaks down this action into smaller steps, each of which can be triggered by a separate click event. For example, let's say the target action is submitting a form. The attacker can divide this action into three steps: filling out the form, clicking the submit button, and confirming the submission. Each step is triggered by a separate click event, and the attacker can use various techniques to hide these clicks from the victim. By using a multistep payload, the attacker can make the clickjacking attack more covert and increase the chances of successfully executing the malicious action. It is important for developers and security professionals to be aware of this technique and implement appropriate countermeasures to protect against multistep clickjacking attacks. ```markup
Click me first
Click me next
``` ### Carga de Arrastar e Soltar + Clique Clickjacking can be combined with drag and drop functionality to create a more sophisticated attack. In this technique, the attacker tricks the user into dragging and dropping an object onto a hidden button or link, which triggers a malicious action. O clickjacking pode ser combinado com a funcionalidade de arrastar e soltar para criar um ataque mais sofisticado. Nessa técnica, o atacante engana o usuário para arrastar e soltar um objeto em um botão ou link oculto, o que aciona uma ação maliciosa. To perform this attack, the attacker first creates a transparent overlay on top of the target website. This overlay contains a draggable object that appears harmless to the user. The attacker then uses JavaScript to capture the user's drag and drop events and redirect them to the hidden button or link. Para realizar esse ataque, o atacante primeiro cria uma sobreposição transparente sobre o site alvo. Essa sobreposição contém um objeto arrastável que parece inofensivo para o usuário. O atacante então usa JavaScript para capturar os eventos de arrastar e soltar do usuário e redirecioná-los para o botão ou link oculto. The user, unaware of the hidden button or link, believes they are interacting with the draggable object on the target website. However, in reality, they are performing actions on the attacker's hidden element. O usuário, sem saber do botão ou link oculto, acredita estar interagindo com o objeto arrastável no site alvo. No entanto, na realidade, eles estão realizando ações no elemento oculto do atacante. This technique can be used to perform various malicious actions, such as submitting forms, making unauthorized purchases, or even enabling microphone and camera access without the user's knowledge. Essa técnica pode ser usada para realizar várias ações maliciosas, como enviar formulários, fazer compras não autorizadas ou até mesmo permitir acesso ao microfone e à câmera sem o conhecimento do usuário. To protect against drag and drop + click payloads, website owners should implement frame-busting techniques, such as the X-Frame-Options header or the Content-Security-Policy frame-ancestors directive. These measures help prevent clickjacking attacks by ensuring that the website is not loaded within a malicious frame. Para se proteger contra cargas de arrastar e soltar + clique, os proprietários de sites devem implementar técnicas de quebra de frames, como o cabeçalho X-Frame-Options ou a diretiva frame-ancestors do Content-Security-Policy. Essas medidas ajudam a prevenir ataques de clickjacking, garantindo que o site não seja carregado dentro de um frame malicioso. ```markup
.
1. Click and press delete button
3.Click me

2.DRAG ME TO THE RED BOX

``` ### XSS + Clickjacking Se você identificou um ataque **XSS que requer que o 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 **preencher** o **formulário** com os parâmetros GET._\ \_\_Um atacante poderia preparar um ataque de **clickjacking** para aquela página, **preenchendo** o **formulário** com o **payload 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**. ## Como evitar o Clickjacking ### Defesas do lado do cliente É possível executar scripts no lado do cliente que realizam alguns ou todos os seguintes comportamentos para prevenir o Clickjacking: * verificar e garantir que a janela de aplicativo atual é a janela principal ou superior, * tornar todos os frames visíveis, * impedir o clique em frames invisíveis, * interceptar e sinalizar possíveis ataques de clickjacking para um usuário. #### Bypass Como os frame busters são JavaScript, as configurações de segurança do navegador podem impedir sua operação ou até mesmo o navegador pode não suportar JavaScript. Uma forma eficaz de contornar os frame busters é usar o **atributo `sandbox` do iframe do HTML5**. Quando isso é definido com os valores `allow-forms` ou `allow-scripts` e o valor `allow-top-navigation` é omitido, o script do frame buster pode ser neutralizado, pois o iframe não pode verificar se é ou não a janela superior. ```markup ``` Tanto os valores `allow-forms` quanto `allow-scripts` permitem as ações especificadas dentro do iframe, mas a navegação de nível superior é desativada. Isso inibe comportamentos de quebra de frame, permitindo ao mesmo tempo a funcionalidade dentro do site-alvo. Dependendo do tipo de ataque de Clickjacking realizado, **você também pode precisar permitir**: `allow-same-origin` e `allow-modals` ou [até mais](https://www.w3schools.com/tags/att\_iframe\_sandbox.asp). Ao preparar o ataque, verifique o console do navegador, pois ele pode informar quais outros comportamentos você precisa permitir. ### X-Frame-Options O cabeçalho de resposta HTTP **`X-Frame-Options`** pode ser usado para indicar se um navegador deve ou não **permitir** a renderização de uma página em um `` ou `