Clickjacking
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
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.
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.
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.
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.
İ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,
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.
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.
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.
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.
Bu politika, aynı kökten (self) ve https://trusted-website.com adresinden çerçevelere izin verir.
child-src
YönergesiWeb 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.
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.
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:
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.
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)