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

64 lines
5.9 KiB
Markdown
Raw Normal View History

2024-02-10 21:30:13 +00:00
# SOME - 동일 출처 메서드 실행
2022-06-23 12:12:25 +00:00
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에서 광고**하거나 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인해보세요!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 저를 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **해킹 트릭을 공유하려면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)에 PR을 제출하세요.
2022-06-23 12:12:25 +00:00
</details>
2024-02-10 21:30:13 +00:00
## 동일 출처 메서드 실행
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
일부 페이지에서는 제한된 자바스크립트를 실행할 수 있는 경우가 있습니다. 예를 들어, **실행될 콜백 값을 제어**할 수 있는 경우입니다(./#javascript-function).
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
이러한 경우에는 **DOM에 액세스하여** 해당 위치에서 찾을 수 있는 **민감한 동작**(예: 버튼 클릭)을 호출하는 것이 가장 좋습니다. 그러나 일반적으로 이러한 취약점은 **DOM에 흥미로운 내용이 없는 작은 엔드포인트에서 발견**됩니다.
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
이러한 시나리오에서는 이 공격이 매우 유용할 것입니다. 왜냐하면 이 공격의 목표는 **동일 도메인의 다른 페이지에서 DOM 내에서 제한된 JS 실행을 악용**하는 것입니다.
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
기본적으로 공격 흐름은 다음과 같습니다:
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
* **악용할 수 있는 콜백을 찾습니다**(잠재적으로 \[\w\\.\_]로 제한됨).
* 제한이 없고 임의의 JS를 실행할 수 있는 경우 일반적인 XSS로 이를 악용할 수 있습니다.
* **피해자가 공격자가 제어하는 페이지를 엽니다**.
* **페이지는 새 창에서 자체를 엽니다**(새 창에는 초기 페이지를 참조하는 **`opener`** 객체가 있습니다).
* **초기 페이지**는 **DOM이 위치한 페이지**를 로드합니다.
* **두 번째 페이지**는 **콜백을 악용하는 취약한 페이지를 로드**하고 **`opener`** 객체를 사용하여 **초기 페이지에서 일부 동작에 액세스하고 실행**합니다(이제 흥미로운 DOM이 포함된 상태입니다).
2022-06-23 12:12:25 +00:00
{% hint style="danger" %}
2024-02-10 21:30:13 +00:00
초기 페이지가 두 번째 페이지를 생성한 후에 새 URL에 액세스하더라도 **두 번째 페이지의 `opener` 객체는 새 DOM에서 첫 번째 페이지를 유효한 참조로 유지**됩니다.
2022-06-23 12:52:13 +00:00
2024-02-10 21:30:13 +00:00
또한 두 번째 페이지가 opener 객체를 사용할 수 있도록 하려면 **두 페이지 모두 동일 출처에 있어야 합니다**. 이러한 취약점을 악용하려면 동일 출처에서 **XSS 유형**을 찾아야 합니다.
2022-06-23 12:12:25 +00:00
{% endhint %}
### Exploitation
2024-02-10 21:30:13 +00:00
* 이 양식을 사용하여 이러한 유형의 취약점을 악용하는 **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)
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
### 예제
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
* 취약한 예제를 [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)에서 찾을 수 있습니다.
* 이 예제에서 서버는 **콜백 매개변수의 내용**을 기반으로 **자바스크립트 코드를 생성**하고 **HTML에 추가**합니다: `<script>opener.{callbacl_content}</script>`. 이 예제에서는 명시적으로 `opener`의 사용을 표시할 필요가 없습니다.
* 또한 이 CTF writeup을 확인하세요: [https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
## 참고 자료
2022-06-23 12:12:25 +00:00
* [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/)
<details>
2024-02-10 21:30:13 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
2022-06-23 12:12:25 +00:00
2024-02-10 21:30:13 +00:00
* **사이버 보안 회사**에서 일하시나요? **회사를 HackTricks에서 광고**하거나 **PEASS의 최신 버전에 액세스**하거나 **HackTricks를 PDF로 다운로드**하고 싶으신가요? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인해보세요!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견해보세요. 독점적인 [**NFT**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter**에서 저를 **팔로우**하세요 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **해킹 트릭을 공유하려면** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **및** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)에 PR을 제출하세요.
2022-06-23 12:12:25 +00:00
</details>