SOME - Same Origin Method Execution
Reading time: 3 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Same Origin Method Execution
페이지에서 제한된 자바스크립트를 실행할 수 있는 경우가 있습니다. 예를 들어, 실행될 콜백 값을 제어할 수 있는 경우입니다.
이 경우, 할 수 있는 가장 좋은 일 중 하나는 DOM에 접근하여 그 안에서 찾을 수 있는 민감한 작업(예: 버튼 클릭)을 호출하는 것입니다. 그러나 일반적으로 이 취약점은 DOM에 흥미로운 것이 없는 작은 엔드포인트에서 발견됩니다.
이러한 시나리오에서 이 공격은 매우 유용합니다. 그 이유는 같은 도메인의 다른 페이지에서 DOM 내의 제한된 JS 실행을 악용할 수 있는 것이기 때문입니다.
기본적으로 공격 흐름은 다음과 같습니다:
- 악용할 수 있는 콜백을 찾습니다 (잠재적으로 [\w\._]로 제한됨).
- 제한이 없고 모든 JS를 실행할 수 있다면, 일반 XSS로 이를 악용할 수 있습니다.
- 피해자가 공격자가 제어하는 페이지를 열도록 만듭니다.
- 페이지가 다른 창에서 열립니다 (새 창은 초기 페이지를 참조하는
opener
객체를 가집니다). - 초기 페이지는 흥미로운 DOM이 위치한 페이지를 로드합니다.
- 두 번째 페이지는 콜백을 악용하여 취약한 페이지를 로드하고
opener
객체를 사용하여 초기 페이지에서 어떤 작업을 접근하고 실행합니다 (이제 흥미로운 DOM을 포함하고 있습니다).
caution
초기 페이지가 두 번째 페이지를 생성한 후 새 URL에 접근하더라도, 두 번째 페이지의 opener
객체는 여전히 새 DOM에서 첫 번째 페이지에 대한 유효한 참조입니다.
또한, 두 번째 페이지가 opener 객체를 사용할 수 있으려면 두 페이지가 동일한 출처에 있어야 합니다. 이것이 이 취약점을 악용하기 위해 동일한 출처에서 XSS를 찾아야 하는 이유입니다.
Exploitation
- 이 형식을 사용하여 이러한 유형의 취약점을 악용하기 위한 PoC를 생성할 수 있습니다: https://www.someattack.com/Playground/SOMEGenerator
- 클릭할 HTML 요소에 대한 DOM 경로를 찾기 위해 이 브라우저 확장 프로그램을 사용할 수 있습니다: https://www.someattack.com/Playground/targeting_tool
Example
- https://www.someattack.com/Playground/에서 취약한 예제를 찾을 수 있습니다.
- 이 예제에서 서버는 자바스크립트 코드를 생성하고 콜백 매개변수의 내용에 따라 HTML에 추가하고 있습니다:
<script>opener.{callbacl_content}</script>
. 그래서 이 예제에서는opener
의 사용을 명시할 필요가 없습니다. - 이 CTF 작성물도 확인하세요: https://ctftime.org/writeup/36068
References
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.