Translated ['src/pentesting-web/clickjacking.md'] to it

This commit is contained in:
Translator 2025-01-06 10:28:35 +00:00
parent 16738683d6
commit 09f5fec5d0

View File

@ -2,20 +2,20 @@
{{#include ../banners/hacktricks-training.md}} {{#include ../banners/hacktricks-training.md}}
## Cos'è il Clickjacking ## What is Clickjacking
In un attacco di clickjacking, un **utente** viene **ingannato** a **cliccare** su un **elemento** di una pagina web che è o **invisibile** o mascherato da un altro elemento. Questa manipolazione può portare a conseguenze indesiderate per l'utente, come il download di malware, il reindirizzamento a pagine web malevole, la fornitura di credenziali o informazioni sensibili, trasferimenti di denaro o l'acquisto online di prodotti. In un attacco di clickjacking, un **utente** viene **ingannato** a **cliccare** su un **elemento** di una pagina web che è o **invisibile** o mascherato da un altro elemento. Questa manipolazione può portare a conseguenze indesiderate per l'utente, come il download di malware, il reindirizzamento a pagine web malevole, la fornitura di credenziali o informazioni sensibili, trasferimenti di denaro o l'acquisto online di prodotti.
### Trucco per precompilare i moduli ### Prepopulate forms trick
A volte è possibile **riempire il valore dei campi di un modulo utilizzando parametri GET durante il caricamento di una pagina**. Un attaccante può abusare di questo comportamento per riempire un modulo con dati arbitrari e inviare il payload di clickjacking affinché l'utente prema il pulsante Invia. A volte è possibile **compilare il valore dei campi di un modulo utilizzando parametri GET durante il caricamento di una pagina**. Un attaccante può abusare di questo comportamento per riempire un modulo con dati arbitrari e inviare il payload di clickjacking affinché l'utente prema il pulsante Invia.
### Popolare il modulo con Drag\&Drop ### Populate form with Drag\&Drop
Se hai bisogno che l'utente **compili un modulo** ma non vuoi chiedergli direttamente di scrivere alcune informazioni specifiche (come l'email o una password specifica che conosci), puoi semplicemente chiedergli di **Drag\&Drop** qualcosa che scriverà i tuoi dati controllati come in [**questo esempio**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/). Se hai bisogno che l'utente **compili un modulo** ma non vuoi chiedergli direttamente di scrivere alcune informazioni specifiche (come l'email o una password specifica che conosci), puoi semplicemente chiedergli di **Drag\&Drop** qualcosa che scriverà i tuoi dati controllati come in [**questo esempio**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
### Payload di base ### Basic Payload
```markup ```css
<style> <style>
iframe { iframe {
position:relative; position:relative;
@ -35,7 +35,7 @@ z-index: 1;
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe> <iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
``` ```
### Payload a più fasi ### Payload a più fasi
```markup ```css
<style> <style>
iframe { iframe {
position:relative; position:relative;
@ -59,7 +59,7 @@ left:210px;
<iframe src="https://vulnerable.net/account"></iframe> <iframe src="https://vulnerable.net/account"></iframe>
``` ```
### Drag\&Drop + Click payload ### Drag\&Drop + Click payload
```markup ```css
<html> <html>
<head> <head>
<style> <style>
@ -94,6 +94,15 @@ Esempio:\
Hai trovato un **self XSS** in alcuni dettagli privati dell'account (dettagli che **solo tu puoi impostare e leggere**). La pagina con il **modulo** per impostare questi dettagli è **vulnerabile** al **Clickjacking** e puoi **precompilare** il **modulo** con i parametri GET.\ Hai trovato un **self XSS** in alcuni dettagli privati dell'account (dettagli che **solo tu puoi impostare e leggere**). La pagina con il **modulo** per impostare questi dettagli è **vulnerabile** al **Clickjacking** e puoi **precompilare** il **modulo** con i parametri GET.\
Un attaccante potrebbe preparare un attacco di **Clickjacking** a quella pagina **precompilando** il **modulo** con il **payload XSS** e **ingannando** l'**utente** a **inviare** il modulo. Quindi, **quando il modulo viene inviato** e i valori vengono modificati, l'**utente eseguirà l'XSS**. Un attaccante potrebbe preparare un attacco di **Clickjacking** a quella pagina **precompilando** il **modulo** con il **payload XSS** e **ingannando** l'**utente** a **inviare** il modulo. Quindi, **quando il modulo viene inviato** e i valori vengono modificati, l'**utente eseguirà l'XSS**.
### DoubleClickjacking
Inizialmente [spiegato in questo post](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html), questa tecnica chiederebbe alla vittima di fare doppio clic su un pulsante di una pagina personalizzata posizionata in un luogo specifico, e utilizzare le differenze di tempo tra gli eventi mousedown e onclick per caricare la pagina della vittima durante il doppio clic in modo che la **vittima clicchi effettivamente su un pulsante legittimo nella pagina della vittima**.
Un esempio può essere visto in questo video: [https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
> [!WARNING]
> Questa tecnica consente di ingannare l'utente a cliccare su 1 posto nella pagina della vittima bypassando ogni protezione contro il clickjacking. Quindi l'attaccante deve trovare **azioni sensibili che possono essere eseguite con un solo clic, come le richieste OAuth per accettare permessi**.
## Strategie per Mitigare il Clickjacking ## Strategie per Mitigare il Clickjacking
### Difese Lato Client ### Difese Lato Client
@ -108,7 +117,7 @@ Gli script eseguiti sul lato client possono eseguire azioni per prevenire il Cli
Tuttavia, questi script di frame-busting possono essere elusi: Tuttavia, questi script di frame-busting possono essere elusi:
- **Impostazioni di Sicurezza dei Browser:** Alcuni browser potrebbero bloccare questi script in base alle loro impostazioni di sicurezza o alla mancanza di supporto per JavaScript. - **Impostazioni di Sicurezza dei Browser:** Alcuni browser potrebbero bloccare questi script in base alle loro impostazioni di sicurezza o alla mancanza di supporto per JavaScript.
- **Attributo `sandbox` dell'iframe HTML5:** Un attaccante può neutralizzare gli script di frame buster impostando l'attributo `sandbox` con valori `allow-forms` o `allow-scripts` senza `allow-top-navigation`. Questo impedisce all'iframe di verificare se è la finestra superiore, e.g., - **Attributo `sandbox` dell'iframe HTML5:** Un attaccante può neutralizzare gli script di frame buster impostando l'attributo `sandbox` con valori `allow-forms` o `allow-scripts` senza `allow-top-navigation`. Questo impedisce all'iframe di verificare se è la finestra principale, e.g.,
```html ```html
<iframe <iframe
id="victim_website" id="victim_website"
@ -125,12 +134,12 @@ L'**intestazione di risposta HTTP `X-Frame-Options`** informa i browser sulla le
- `X-Frame-Options: deny` - Nessun dominio può incapsulare il contenuto. - `X-Frame-Options: deny` - Nessun dominio può incapsulare il contenuto.
- `X-Frame-Options: sameorigin` - Solo il sito attuale può incapsulare il contenuto. - `X-Frame-Options: sameorigin` - Solo il sito attuale può incapsulare il contenuto.
- `X-Frame-Options: allow-from https://trusted.com` - Solo l' 'uri' specificato può incapsulare la pagina. - `X-Frame-Options: allow-from https://trusted.com` - Solo l'uri specificato può incapsulare la pagina.
- Nota le limitazioni: se il browser non supporta questa direttiva, potrebbe non funzionare. Alcuni browser preferiscono la direttiva CSP frame-ancestors. - Nota le limitazioni: se il browser non supporta questa direttiva, potrebbe non funzionare. Alcuni browser preferiscono la direttiva CSP frame-ancestors.
#### Direttiva frame-ancestors della Content Security Policy (CSP) #### Direttiva frame-ancestors della Content Security Policy (CSP)
La **direttiva `frame-ancestors` nella CSP** è il metodo consigliato per la protezione dal Clickjacking: La **direttiva `frame-ancestors` in CSP** è il metodo consigliato per la protezione contro il Clickjacking:
- `frame-ancestors 'none'` - Simile a `X-Frame-Options: deny`. - `frame-ancestors 'none'` - Simile a `X-Frame-Options: deny`.
- `frame-ancestors 'self'` - Simile a `X-Frame-Options: sameorigin`. - `frame-ancestors 'self'` - Simile a `X-Frame-Options: sameorigin`.
@ -140,11 +149,11 @@ Ad esempio, la seguente CSP consente solo l'incapsulamento dallo stesso dominio:
`Content-Security-Policy: frame-ancestors 'self';` `Content-Security-Policy: frame-ancestors 'self';`
Ulteriori dettagli ed esempi complessi possono essere trovati nella [documentazione frame-ancestors CSP](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e nella [documentazione frame-ancestors CSP di Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors). Ulteriori dettagli ed esempi complessi possono essere trovati nella [documentazione frame-ancestors CSP](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e nella [documentazione frame-ancestors di Mozilla](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
### Content Security Policy (CSP) con `child-src` e `frame-src` ### Content Security Policy (CSP) con `child-src` e `frame-src`
La **Content Security Policy (CSP)** è una misura di sicurezza che aiuta a prevenire il Clickjacking e altri attacchi di iniezione di codice specificando quali fonti il browser dovrebbe consentire per caricare contenuti. La **Content Security Policy (CSP)** è una misura di sicurezza che aiuta a prevenire il Clickjacking e altri attacchi di iniezione di codice specificando quali fonti il browser dovrebbe consentire di caricare contenuti.
#### Direttiva `frame-src` #### Direttiva `frame-src`
@ -153,7 +162,7 @@ La **Content Security Policy (CSP)** è una misura di sicurezza che aiuta a prev
``` ```
Content-Security-Policy: frame-src 'self' https://trusted-website.com; Content-Security-Policy: frame-src 'self' https://trusted-website.com;
``` ```
Questa politica consente frame dalla stessa origine (self) e https://trusted-website.com. Questa politica consente i frame dalla stessa origine (self) e https://trusted-website.com.
#### Direttiva `child-src` #### Direttiva `child-src`