mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/clickjacking.md'] to it
This commit is contained in:
parent
16738683d6
commit
09f5fec5d0
@ -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`
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user