Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**Samo** određeni elementi mogu koristiti **name atribut** za klobiranje globalnih promenljivih, to su: `embed`, `form`, `iframe`, `image`, `img` i `object`.
Zanimljivo je da kada koristite **form element** za **klobiranje** promenljive, dobićete **`toString`** vrednost samog elementa: `[object HTMLFormElement]`, ali sa **anchor****`toString`** će biti **`href`** ankera. Stoga, ako klobirate koristeći **`a`** tag, možete **kontrolisati****vrednost** kada se **tretira kao string**:
Ako filter **prolazi** kroz **atribute** čvora koristeći nešto poput `document.getElementByID('x').attributes`, mogli biste **prebrisati** atribut **`.attributes`** i **pokvariti filter**. Druga DOM svojstva kao što su **`tagName`**, **`nodeName`** ili **`parentNode`** i još mnogo toga su takođe **prebrisiva**.
Manipulacija HTML-om na stranici omogućava prepisivanje `someObject` sa DOM čvorom, što potencijalno uvodi sigurnosne ranjivosti. Na primer, možete zameniti `someObject` sa elementom ankera koji upućuje na zloćudni skript:
**Trik**: **`DOMPurify`** vam omogućava da koristite **`cid:`** protokol, koji **ne kodira URL dvostruke navodnike**. To znači da možete **ubaciti kodirane dvostruke navodnike koji će biti dekodirani u vreme izvršavanja**. Stoga, ubacivanje nečega poput **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`** će učiniti da HTML kodirani `"` bude **dekodiran u vreme izvršavanja** i **izbegne** iz vrednosti atributa kako bi **stvorio****`onerror`** događaj.
Druga tehnika koristi **`form`** element. Određene biblioteke na klijentskoj strani ispituju atribute novokreiranog form elementa kako bi ih očistile. Međutim, dodavanjem `input` sa `id=attributes` unutar forme, efikasno prepisujete svojstvo atributa, sprečavajući sanitizator da pristupi stvarnim atributima.
> [Document](https://html.spec.whatwg.org/multipage/dom.html#document) interfejs [podržava imenovane atribute](https://webidl.spec.whatwg.org/#dfn-support-named-properties). [Podržana imena svojstava](https://webidl.spec.whatwg.org/#dfn-supported-property-names) objekta [Document](https://html.spec.whatwg.org/multipage/dom.html#document) u bilo kom trenutku se sastoje od sledećih, u [redosledu stabla](https://dom.spec.whatwg.org/#concept-tree-order) prema elementu koji ih je doprineo, ignorišući kasnije duplikate, i sa vrednostima iz [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) atributa koji dolaze pre vrednosti iz imenskih atributa kada isti element doprinosi oboma:
> \- Vrednost atributa sadržaja imena za sve [izložene](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), i [izložene](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) elemente koji imaju ne-prazan atribut sadržaja imena i koji su [u stablu dokumenata](https://dom.spec.whatwg.org/#in-a-document-tree) sa dokumentom kao njihovim [korenom](https://dom.spec.whatwg.org/#concept-tree-root);\
> \- Vrednost [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) atributa sadržaja za sve [izložene](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) elemente koji imaju ne-prazan [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) atribut sadržaja i koji su [u stablu dokumenata](https://dom.spec.whatwg.org/#in-a-document-tree) sa dokumentom kao njihovim [korenom](https://dom.spec.whatwg.org/#concept-tree-root);\
> \- Vrednost [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) atributa sadržaja za sve [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) elemente koji imaju i ne-prazan [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) atribut sadržaja i ne-prazan atribut sadržaja imena, i koji su [u stablu dokumenata](https://dom.spec.whatwg.org/#in-a-document-tree) sa dokumentom kao njihovim [korenom](https://dom.spec.whatwg.org/#concept-tree-root).
Korišćenjem ove tehnike možete prepisati često korišćene **vrednosti kao što su `document.cookie`, `document.body`, `document.children`**, pa čak i metode u Document interfejsu kao što je `document.querySelector`.
Rezultati poziva **`document.getElementById()`** i **`document.querySelector()`** mogu se promeniti injektovanjem `<html>` ili `<body>` taga sa identičnim id atributom. Evo kako to može da se uradi:
Pored toga, korišćenjem stilova za skrivanje ovih ubačenih HTML/body tagova, može se sprečiti ometanje od strane drugog teksta u `innerText`, čime se povećava efikasnost napada:
Moguće je dodati **nove unose unutar forme** jednostavno tako što ćete **navesti `form` atribut** unutar nekih oznaka. Možete to koristiti da **dodate nove vrednosti unutar forme** i čak dodate novi **dugme** za **slanje** (clickjacking ili zloupotreba nekog `.click()` JS koda):
Naučite i vežbajte AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Naučite i vežbajte GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**