hacktricks/pentesting-web/xss-cross-site-scripting/some-same-origin-method-execution.md
2024-02-10 21:30:13 +00:00

5.9 KiB

SOME - 동일 출처 메서드 실행

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

동일 출처 메서드 실행

일부 페이지에서는 제한된 자바스크립트를 실행할 수 있는 경우가 있습니다. 예를 들어, 실행될 콜백 값을 제어할 수 있는 경우입니다(./#javascript-function).

이러한 경우에는 DOM에 액세스하여 해당 위치에서 찾을 수 있는 민감한 동작(예: 버튼 클릭)을 호출하는 것이 가장 좋습니다. 그러나 일반적으로 이러한 취약점은 DOM에 흥미로운 내용이 없는 작은 엔드포인트에서 발견됩니다.

이러한 시나리오에서는 이 공격이 매우 유용할 것입니다. 왜냐하면 이 공격의 목표는 동일 도메인의 다른 페이지에서 DOM 내에서 제한된 JS 실행을 악용하는 것입니다.

기본적으로 공격 흐름은 다음과 같습니다:

  • 악용할 수 있는 콜백을 찾습니다(잠재적으로 [\w\._]로 제한됨).
  • 제한이 없고 임의의 JS를 실행할 수 있는 경우 일반적인 XSS로 이를 악용할 수 있습니다.
  • 피해자가 공격자가 제어하는 페이지를 엽니다.
  • 페이지는 새 창에서 자체를 엽니다(새 창에는 초기 페이지를 참조하는 opener 객체가 있습니다).
  • 초기 페이지DOM이 위치한 페이지를 로드합니다.
  • 두 번째 페이지콜백을 악용하는 취약한 페이지를 로드하고 opener 객체를 사용하여 초기 페이지에서 일부 동작에 액세스하고 실행합니다(이제 흥미로운 DOM이 포함된 상태입니다).

{% hint style="danger" %} 초기 페이지가 두 번째 페이지를 생성한 후에 새 URL에 액세스하더라도 두 번째 페이지의 opener 객체는 새 DOM에서 첫 번째 페이지를 유효한 참조로 유지됩니다.

또한 두 번째 페이지가 opener 객체를 사용할 수 있도록 하려면 두 페이지 모두 동일 출처에 있어야 합니다. 이러한 취약점을 악용하려면 동일 출처에서 XSS 유형을 찾아야 합니다. {% endhint %}

Exploitation

예제

  • 취약한 예제를 https://www.someattack.com/Playground/에서 찾을 수 있습니다.
  • 이 예제에서 서버는 콜백 매개변수의 내용을 기반으로 자바스크립트 코드를 생성하고 HTML에 추가합니다: <script>opener.{callbacl_content}</script>. 이 예제에서는 명시적으로 opener의 사용을 표시할 필요가 없습니다.
  • 또한 이 CTF writeup을 확인하세요: https://ctftime.org/writeup/36068

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!