`** farà sì che l'apice codificato in HTML `"` venga **decodificato durante l'esecuzione** e **scappi** dal valore dell'attributo per **creare** l'evento **`onerror`**.
Un'altra tecnica utilizza un elemento **`form`**. Alcune librerie lato client ispezionano gli attributi di un elemento form appena creato per pulirli. Tuttavia, aggiungendo un `input` con `id=attributes` all'interno del form, sovrascrivi effettivamente la proprietà degli attributi, impedendo al sanitizer di accedere agli attributi effettivi.
Puoi [**trovare un esempio di questo tipo di sovrascrittura in questa descrizione di CTF**](iframes-in-xss-and-csp.md#iframes-in-sop-2).
## Sovrascrittura dell'oggetto documento
Secondo la documentazione è possibile sovrascrivere gli attributi dell'oggetto documento utilizzando la sovrascrittura del DOM:
> L'interfaccia [Document](https://html.spec.whatwg.org/multipage/dom.html#document) [supporta proprietà denominate](https://webidl.spec.whatwg.org/#dfn-support-named-properties). I nomi delle proprietà supportate di un oggetto [Document](https://html.spec.whatwg.org/multipage/dom.html#document) in un determinato momento consistono dei seguenti, in [ordine gerarchico](https://dom.spec.whatwg.org/#concept-tree-order) secondo l'elemento che li ha contribuiti, ignorando i duplicati successivi e con i valori degli attributi [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) che precedono i valori degli attributi name quando lo stesso elemento contribuisce ad entrambi:
>
> \- Il valore dell'attributo content name per tutti gli elementi [esposti](https://html.spec.whatwg.org/multipage/dom.html#exposed) [embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element), [form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element), [iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element), [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) e [esposti](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) che hanno un attributo content name non vuoto e sono [in un albero di documenti](https://dom.spec.whatwg.org/#in-a-document-tree) con il documento come loro [radice](https://dom.spec.whatwg.org/#concept-tree-root);\
> \
> \- Il valore dell'attributo content [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) per tutti gli elementi [esposti](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) che hanno un attributo content [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vuoto e sono [in un albero di documenti](https://dom.spec.whatwg.org/#in-a-document-tree) con il documento come loro [radice](https://dom.spec.whatwg.org/#concept-tree-root);\
> \
> \- Il valore dell'attributo content [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) per tutti gli elementi [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) che hanno sia un attributo content [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) non vuoto che un attributo content name non vuoto e sono [in un albero di documenti](https://dom.spec.whatwg.org/#in-a-document-tree) con il documento come loro [radice](https://dom.spec.whatwg.org/#concept-tree-root).
Utilizzando questa tecnica puoi sovrascrivere valori comunemente utilizzati come `document.cookie`, `document.body`, `document.children` e persino metodi nell'interfaccia Document come `document.querySelector`.
```javascript
document.write(" ")
document.cookie
typeof(document.cookie)
'object'
//Something more sanitize friendly than a img tag
document.write("")
document.cookie
HTMLCollection(2) [img, form, cookie: img]
typeof(document.cookie)
'object
```
## Scrittura dopo l'elemento clobbered
I risultati delle chiamate a **`document.getElementById()`** e **`document.querySelector()`** possono essere alterati iniettando un tag `` o `` con un attributo id identico. Ecco come può essere fatto:
```html
test
clobbered
```
Inoltre, utilizzando stili per nascondere questi tag HTML/body iniettati, è possibile evitare interferenze da altri testi presenti in `innerText`, migliorando così l'efficacia dell'attacco:
```html
test
existing text
clobbered
```
Le indagini su SVG hanno rivelato che anche un tag `` può essere utilizzato in modo efficace:
```html
example.com
clobbered
```
Per far funzionare il tag HTML all'interno di SVG nei browser come Chrome e Firefox, è necessario utilizzare il tag ``:
```html
example.com
clobbered
```
## Sovrascrittura dei form
È possibile aggiungere **nuove voci all'interno di un form** semplicemente specificando l'attributo `form` all'interno di alcuni tag. Puoi utilizzare questo metodo per **aggiungere nuovi valori all'interno di un form** e persino per aggiungere un nuovo **pulsante** per **inviarlo** (clickjacking o sfruttando del codice JS `.click()`):
{% code overflow="wrap" %}
```html
Click to send!
```
{% endcode %}
* Per ulteriori attributi di form in [**button check this**](https://www.w3schools.com/tags/tag\_button.asp)**.**
## Riferimenti
* [https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering](https://portswigger.net/research/hijacking-service-workers-via-dom-clobbering)
* [https://portswigger.net/web-security/dom-based/dom-clobbering](https://portswigger.net/web-security/dom-based/dom-clobbering)
* Heyes, Gareth. JavaScript per hacker: Impara a pensare come un hacker.
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert) !
* Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata su HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* 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 hacktricks**](https://github.com/carlospolop/hacktricks) **e al** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).