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.
흥미롭게도, **form 요소**를 사용하여 변수를 **클로버링**할 경우, 요소 자체의 **`toString`** 값이 반환됩니다: `[object HTMLFormElement]` 그러나 **anchor**를 사용할 경우 **`toString`** 값은 앵커의 **`href`**가 됩니다. 따라서, **`a`** 태그를 사용하여 클로버링하면, **문자열로 처리될 때** **값**을 **제어**할 수 있습니다:
필터가 `document.getElementByID('x').attributes`와 같은 것을 사용하여 노드의 **속성**을 **루프**하고 있다면, **`.attributes`** 속성을 **클로버**하여 필터를 **중단**시킬 수 있습니다. **`tagName`**, **`nodeName`** 또는 **`parentNode`**와 같은 다른 DOM 속성들도 **클로버**할 수 있습니다.
**트릭**: **`DOMPurify`**는 **`cid:`** 프로토콜을 사용하도록 허용하며, 이는 **이중 따옴표를 URL 인코딩하지 않습니다**. 이는 **런타임에 디코딩될 인코딩된 이중 따옴표를 주입할 수 있음을 의미합니다**. 따라서 **`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:"onerror=alert(1)//">`**와 같은 것을 주입하면 HTML 인코딩된 `"`가 **런타임에 디코딩되어** 속성 값에서 **탈출**하여 **`onerror`** 이벤트를 **생성**합니다.
또 다른 기술은 **`form`** 요소를 사용합니다. 특정 클라이언트 측 라이브러리는 새로 생성된 폼 요소의 속성을 검사하여 이를 정리합니다. 그러나 폼 안에 `id=attributes`가 있는 `input`을 추가함으로써 속성 속성을 효과적으로 덮어쓰게 되어, 정리기가 실제 속성에 접근하지 못하게 합니다.
> [문서](https://html.spec.whatwg.org/multipage/dom.html#document) 인터페이스는 [이름이 있는 속성](https://webidl.spec.whatwg.org/#dfn-support-named-properties)을 지원합니다. [문서](https://html.spec.whatwg.org/multipage/dom.html#document) 객체의 [지원되는 속성 이름](https://webidl.spec.whatwg.org/#dfn-supported-property-names)은 다음과 같으며, 이는 기여한 요소에 따라 [트리 순서](https://dom.spec.whatwg.org/#concept-tree-order)로 정렬되며, 나중의 중복은 무시되고, 동일한 요소가 두 가지를 기여할 때는 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 속성의 값이 이름 속성의 값보다 먼저 옵니다:
> \- 비어 있지 않은 이름 콘텐츠 속성을 가진 모든 [노출된](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), 및 [노출된](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) 요소의 이름 콘텐츠 속성 값은 문서가 그들의 [루트](https://dom.spec.whatwg.org/#concept-tree-root)인 [문서 트리](https://dom.spec.whatwg.org/#in-a-document-tree)에 있습니다;\
> \- 비어 있지 않은 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 콘텐츠 속성을 가진 모든 [노출된](https://html.spec.whatwg.org/multipage/dom.html#exposed) [object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element) 요소의 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 콘텐츠 속성 값은 문서가 그들의 [루트](https://dom.spec.whatwg.org/#concept-tree-root)인 [문서 트리](https://dom.spec.whatwg.org/#in-a-document-tree)에 있습니다;\
> \- 비어 있지 않은 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 콘텐츠 속성과 비어 있지 않은 이름 콘텐츠 속성을 모두 가진 모든 [img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element) 요소의 [id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute) 콘텐츠 속성 값은 문서가 그들의 [루트](https://dom.spec.whatwg.org/#concept-tree-root)인 [문서 트리](https://dom.spec.whatwg.org/#in-a-document-tree)에 있습니다.
**양식 안에 새로운 항목을 추가하는 것이 가능합니다** 단지 **일부 태그 안에 `form` 속성을 지정함으로써**. 이를 사용하여 **양식 안에 새로운 값을 추가하고** 심지어 **전송할 새로운 버튼을 추가할 수 있습니다** (클릭재킹 또는 일부 `.click()` JS 코드를 악용하여):
* Heyes, Gareth. 해커를 위한 JavaScript: 해커처럼 생각하는 법 배우기.
{% hint style="success" %}
AWS 해킹 배우기 및 연습하기:<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">\
GCP 해킹 배우기 및 연습하기: <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)