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:
Clickjacking saldırısında, bir kullanıcı, bir web sayfasında ya görünmez ya da 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ğerlerini 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 (örneğin, bildiğiniz e-posta veya belirli bir şifre) yazmasını doğrudan istemek istemiyorsanız, ona sadece Drag&Drop 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: &#xNAN;You, hesabın bazı özel detaylarında bir self XSS buldunuz (bu detayları sadece siz ayarlayabilir ve okuyabilirsiniz). Bu detayları ayarlamak için kullanılan form ile sayfa Clickjacking'e karşı savunmasız ve formu GET parametreleri ile önceden doldurabilirsiniz. __Bir saldırgan, bu sayfaya yönelik bir Clickjacking saldırısı hazırlayarak formu XSS yükü ile önceden doldurup 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 en üst pencere olup olmadığını doğrulamasını engeller, örneğin,
The allow-forms
ve allow-scripts
değerleri, üst düzey navigasyonu devre dışı bırakırken iframe içinde eylemleri etkinleştirir. 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: Eğer 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ı ayarlamak ü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 edin.
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 token'ları kullanarak, durum değiştiren isteklerin kullanıcının kasıtlı olarak yapıldığından emin olun ve Clickjacked bir sayfa aracılığıyla yapılmadığını kontrol edin.
Trickest kullanarak dünyanın en gelişmiş topluluk araçlarıyla 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)