Reverse Tab Nabbing
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
У ситуації, коли зловмисник може контролювати аргумент href
тегу <a
з атрибутом target="_blank" rel="opener"
, на який натисне жертва, зловмисник направляє це посилання на веб-сайт під своїм контролем ( шкідливий веб-сайт). Потім, коли жертва натискає на посилання і переходить на веб-сайт зловмисника, цей шкідливий веб-сайт зможе контролювати оригінальну сторінку через об'єкт javascript window.opener
.
Якщо сторінка не має rel="opener"
але містить target="_blank"
і також не має rel="noopener"
, вона також може бути вразливою.
Звичайний спосіб зловживання цією поведінкою полягає в тому, щоб змінити місцезнаходження оригінального веб-сайту через window.opener.location = https://attacker.com/victim.html
на веб-сайт, контрольований зловмисником, який схожий на оригінальний, щоб він міг імітувати форму входу оригінального веб-сайту та запитувати у користувача облікові дані.
Однак зверніть увагу, що оскільки зловмисник тепер може контролювати об'єкт вікна оригінального веб-сайту, він може зловживати ним іншим чином для виконання прихованих атак (можливо, модифікуючи події javascript для витоку інформації на сервер, контрольований ним?)
Посилання між батьківськими та дочірніми сторінками, коли атрибут запобігання не використовується:
Посилання між батьківськими та дочірніми сторінками, коли атрибут запобігання використовується:
Створіть наступні сторінки в папці та запустіть веб-сервер за допомогою python3 -m http.server
Потім перейдіть за адресою http://127.0.0.1:8000/
vulnerable.html, натисніть на посилання та зверніть увагу, як URL оригінального веб-сайту змінюється.
У сценарії, коли відбувається крос-доменний доступ (доступ через різні домени), властивості екземпляра класу window JavaScript, на який посилається об'єкт opener JavaScript, доступні для зловмисного сайту обмежені наступними:
opener.closed
: Ця властивість використовується для визначення, чи було закрито вікно, повертаючи булеве значення.
opener.frames
: Ця властивість надає доступ до всіх елементів iframe у поточному вікні.
opener.length
: Кількість елементів iframe, присутніх у поточному вікні, повертається цією властивістю.
opener.opener
: Посилання на вікно, яке відкрило поточне вікно, можна отримати через цю властивість.
opener.parent
: Ця властивість повертає батьківське вікно поточного вікна.
opener.self
: Доступ до самого поточного вікна надається цією властивістю.
opener.top
: Ця властивість повертає найвищу вікно браузера.
Однак у випадках, коли домени ідентичні, зловмисний сайт отримує доступ до всіх властивостей, які надає window JavaScript об'єкт.
Інформація про запобігання задокументована в HTML5 Cheat Sheet.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)