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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Same Origin Method Execution
Існують випадки, коли ви можете виконати обмежений javascript на сторінці. Наприклад, у випадку, коли ви можете контролювати значення зворотного виклику, яке буде виконано.
У таких випадках одне з найкращих, що ви можете зробити, це доступитися до DOM, щоб викликати будь-яку чутливу дію, яку ви можете знайти там (наприклад, натискаючи кнопку). Однак зазвичай ви знайдете цю вразливість у малих кінцевих точках без будь-яких цікавих речей у DOM.
У таких сценаріях ця атака буде дуже корисною, оскільки її мета полягає в тому, щоб мати можливість зловживати обмеженим виконанням JS всередині DOM з іншої сторінки з того ж домену з набагато цікавими діями.
В основному, потік атаки виглядає наступним чином:
- Знайти зворотний виклик, яким ви можете зловживати (потенційно обмежений до [\w\._]).
- Якщо він не обмежений і ви можете виконати будь-який JS, ви можете просто зловживати цим як звичайним XSS.
- Змусити жертву відкрити сторінку, контрольовану зловмисником.
- Сторінка відкриється сама в іншому вікні (нове вікно матиме об'єкт
opener
, що посилається на початкове). - Початкова сторінка завантажить сторінку, де знаходиться цікавий DOM.
- Друга сторінка завантажить вразливу сторінку, зловживаючи зворотним викликом і використовуючи об'єкт
opener
, щоб доступитися та виконати деяку дію на початковій сторінці (яка тепер містить цікавий DOM).
caution
Зверніть увагу, що навіть якщо початкова сторінка отримує доступ до нової URL-адреси після створення другої сторінки, об'єкт opener
другої сторінки все ще є дійсним посиланням на першу сторінку в новому DOM.
Більше того, для того щоб друга сторінка могла використовувати об'єкт opener, обидві сторінки повинні бути в одному походженні. Це причина, чому, щоб зловживати цією вразливістю, вам потрібно знайти якийсь вид XSS в одному походженні.
Exploitation
- Ви можете використовувати цю форму, щоб згенерувати PoC для експлуатації цього типу вразливості: https://www.someattack.com/Playground/SOMEGenerator
- Щоб знайти шлях DOM до HTML-елемента з кліком, ви можете використовувати цей браузерний розширення: https://www.someattack.com/Playground/targeting_tool
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.