SOME - Same Origin Method Execution

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Виконання методу з тією самого походження

Іноді ви зможете виконати обмежений JavaScript на сторінці. Наприклад, у випадку, коли ви можете контролювати значення зворотного виклику, яке буде виконано.

У таких випадках одним з найкращих рішень, яке ви можете зробити, є доступ до DOM для виклику будь-якої чутливої дії, яку ви можете знайти там (наприклад, натискання кнопки). Однак, зазвичай ви знайдете цю вразливість в невеликих кінцевих точках без цікавих речей в DOM.

У таких сценаріях цей атака буде дуже корисною, оскільки її мета - зловживання обмеженим виконанням JS всередині DOM з іншої сторінки з тієї самої доменної зони з багатьма цікавими діями.

Основний хід атаки виглядає наступним чином:

  • Знайдіть зворотний виклик, який ви можете зловживати (потенційно обмежений до [\w\._]).

  • Якщо він не обмежений і ви можете виконати будь-який JS, ви можете просто зловживати цим як звичайним XSS

  • Зробіть так, щоб жертва відкрила сторінку, керовану зловмисником

  • Сторінка відкриється сама в іншому вікні (нове вікно матиме об'єкт opener, який посилається на початковий)

  • Початкова сторінка завантажить сторінку, де знаходиться цікавий DOM.

  • Друга сторінка завантажить вразливу сторінку, зловживаючи зворотнім викликом та використовуючи об'єкт opener, щоб отримати доступ та виконати дію на початковій сторінці (яка тепер містить цікавий DOM).

Зверніть увагу, що навіть якщо початкова сторінка отримує доступ до нового URL після створення другої сторінки, об'єкт opener другої сторінки все ще є дійсним посиланням на першу сторінку в новому DOM.

Крім того, для того, щоб друга сторінка могла використовувати об'єкт opener, обидві сторінки повинні бути в тій самій доменній зоні. Це причина того, чому для зловживання цією вразливістю вам потрібно знайти якийсь XSS в тій самій доменній зоні.

Експлуатація

Приклад

  • Ви можете знайти вразливий приклад за посиланням https://www.someattack.com/Playground/

  • Зверніть увагу, що в цьому прикладі сервер генерує код JavaScript та додає його до HTML на основі вмісту параметра зворотнього виклику: <script>opener.{callbacl_content}</script> . Тому в цьому прикладі вам не потрібно явно вказувати використання opener.

  • Також перевірте цей опис CTF: https://ctftime.org/writeup/36068

Посилання

Last updated