SOME - Same Origin Method Execution

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Same Origin Method Execution

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

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

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

В основному, потік атаки виглядає наступним чином:

  • Знайти зворотний виклик, яким ви можете зловживати (потенційно обмежений до [\w\._]).
  • Якщо він не обмежений і ви можете виконати будь-який JS, ви можете просто зловживати цим як звичайним XSS.
  • Змусити жертву відкрити сторінку, контрольовану зловмисником.
  • Сторінка відкриється сама в іншому вікні (нове вікно матиме об'єкт opener, що посилається на початкове).
  • Початкова сторінка завантажить сторінку, де знаходиться цікавий DOM.
  • Друга сторінка завантажить вразливу сторінку, зловживаючи зворотним викликом і використовуючи об'єкт opener, щоб доступитися та виконати деяку дію на початковій сторінці (яка тепер містить цікавий DOM).

caution

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

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

Exploitation

Example

  • Ви можете знайти вразливий приклад у https://www.someattack.com/Playground/
  • Зверніть увагу, що в цьому прикладі сервер генерує javascript код і додає його до HTML на основі вмісту параметра зворотного виклику: <script>opener.{callbacl_content}</script>. Ось чому в цьому прикладі вам не потрібно явно вказувати використання opener.
  • Також перегляньте цей CTF звіт: https://ctftime.org/writeup/36068

References

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks