hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md

83 lines
6.2 KiB
Markdown

# SOME - Same Origin Method Execution
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}
### [WhiteIntel](https://whiteintel.io)
<figure><img src="../../.gitbook/assets/image (1227).png" alt=""><figcaption></figcaption></figure>
[**WhiteIntel**](https://whiteintel.io)는 **다크 웹** 기반의 검색 엔진으로, 기업이나 고객이 **stealer malwares**에 의해 **침해**되었는지 확인할 수 있는 **무료** 기능을 제공합니다.
WhiteIntel의 주요 목표는 정보 탈취 악성 소프트웨어로 인한 계정 탈취 및 랜섬웨어 공격에 맞서 싸우는 것입니다.
그들의 웹사이트를 확인하고 **무료**로 엔진을 사용해 볼 수 있습니다:
{% embed url="https://whiteintel.io" %}
***
## Same Origin Method Execution
페이지에서 제한된 자바스크립트를 실행할 수 있는 경우가 있습니다. 예를 들어, [**실행될 콜백 값을 제어할 수 있는 경우**](./#javascript-function)입니다.
이런 경우, 할 수 있는 가장 좋은 일 중 하나는 **DOM에 접근하여** 그곳에서 찾을 수 있는 어떤 **민감한 작업을 호출하는 것**입니다 (예: 버튼 클릭). 그러나 일반적으로 이 취약점은 **DOM에 흥미로운 것이 없는 작은 엔드포인트에서 발견됩니다**.
이런 시나리오에서 이 공격은 매우 유용합니다. 그 이유는 **같은 도메인의 다른 페이지에서 DOM 내의 제한된 JS 실행을 악용할 수 있는** 것이기 때문입니다.
기본적으로 공격 흐름은 다음과 같습니다:
* **악용할 수 있는 콜백을 찾습니다** (잠재적으로 \[\w\\.\_]로 제한됨).
* 제한이 없고 어떤 JS도 실행할 수 있다면, 일반 XSS처럼 이를 악용할 수 있습니다.
* **피해자가 공격자가 제어하는 페이지를 열도록 만듭니다.**
* **페이지가 다른 창에서 열립니다** (새 창은 초기 창을 참조하는 **`opener`** 객체를 가집니다).
* **초기 페이지**는 **흥미로운 DOM**이 위치한 **페이지**를 로드합니다.
* **두 번째 페이지**는 **콜백을 악용하여 취약한 페이지를 로드하고** **`opener`** 객체를 사용하여 **초기 페이지에서 어떤 작업을 접근하고 실행합니다** (이제 흥미로운 DOM을 포함하고 있습니다).
{% hint style="danger" %}
초기 페이지가 두 번째 페이지를 생성한 후 새 URL에 접근하더라도, **두 번째 페이지의 `opener` 객체는 여전히 새 DOM에서 첫 번째 페이지에 대한 유효한 참조입니다**.
또한, 두 번째 페이지가 opener 객체를 사용할 수 있으려면 **두 페이지 모두 같은 출처에 있어야 합니다**. 이것이 이 취약점을 악용하기 위해 **같은 출처에서 XSS를 찾아야 하는 이유입니다**.
{% endhint %}
### Exploitation
* 이 양식을 사용하여 **이 유형의 취약점을 악용하기 위한 PoC를 생성할 수 있습니다**: [https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* 클릭할 HTML 요소에 대한 DOM 경로를 찾기 위해 이 브라우저 확장 프로그램을 사용할 수 있습니다: [https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
### Example
* 취약한 예제를 [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)에서 찾을 수 있습니다.
* 이 예제에서 서버는 **자바스크립트 코드를 생성하고** 이를 **콜백 매개변수의 내용에 따라** HTML에 추가하고 있습니다: `<script>opener.{callbacl_content}</script>` . 그래서 이 예제에서는 `opener`의 사용을 명시적으로 지시할 필요가 없습니다.
* 이 CTF 작성물도 확인하세요: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
## References
* [https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/](https://conference.hitb.org/hitbsecconf2017ams/sessions/everybody-wants-some-advance-same-origin-method-execution/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}