diff --git a/hacktricks-preprocessor.py b/hacktricks-preprocessor.py index af5949449..5d070c39f 100644 --- a/hacktricks-preprocessor.py +++ b/hacktricks-preprocessor.py @@ -78,6 +78,9 @@ def ref(matchobj): sys.exit(1) + if href.endswith("/README.md"): + href = href.replace("/README.md", "/index.html") + template = f"""{title}""" # translate_table = str.maketrans({"\"":"\\\"","\n":"\\n"}) diff --git a/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md b/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md index 502f05cb4..5a0e046b0 100644 --- a/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md +++ b/src/generic-methodologies-and-resources/external-recon-methodology/wide-source-code-search.md @@ -7,13 +7,13 @@ Bu sayfanın amacı, bir veya daha fazla platformda binlerce/milyonlarca repo i Bu, **sızdırılmış bilgileri** veya **zafiyet** kalıplarını aramak için birkaç durumda yardımcı olur. - [**Sourcebot**](https://www.sourcebot.dev/): Açık kaynak kod arama aracı. Modern bir web arayüzü aracılığıyla binlerce reposu arasında indeksleme ve arama yapar. -- [**SourceGraph**](https://sourcegraph.com/search): Milyonlarca repo içinde arama yapar. Ücretsiz bir sürümü ve 15 gün ücretsiz olan bir kurumsal sürümü vardır. Regex destekler. +- [**SourceGraph**](https://sourcegraph.com/search): Milyonlarca repo içinde arama yapar. Ücretsiz bir versiyonu ve 15 gün ücretsiz olan bir kurumsal versiyonu vardır. Regex destekler. - [**Github Search**](https://github.com/search): Github üzerinde arama yapar. Regex destekler. - Belki [**Github Code Search**](https://cs.github.com/) kontrol etmek de faydalı olabilir. - [**Gitlab Advanced Search**](https://docs.gitlab.com/ee/user/search/advanced_search.html): Gitlab projeleri arasında arama yapar. Regex destekler. - [**SearchCode**](https://searchcode.com/): Milyonlarca projede kod arar. > [!WARNING] -> Bir repoda sızıntılar ararken ve `git log -p` gibi bir şey çalıştırırken, **diğer gizli bilgileri içeren diğer commit'lere sahip diğer dallar** olabileceğini unutmayın! +> Bir repoda sızıntılar ararken ve `git log -p` gibi bir şey çalıştırırken, **gizli bilgileri içeren diğer commit'lere sahip diğer dallar** olabileceğini unutmayın! {{#include ../../banners/hacktricks-training.md}} 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 224617b8b..29082bb2e 100644 --- a/src/pentesting-web/content-security-policy-csp-bypass/README.md +++ b/src/pentesting-web/content-security-policy-csp-bypass/README.md @@ -4,7 +4,7 @@ ## CSP Nedir -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. +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, inline kaynakları ve `eval`, `setTimeout` veya `setInterval` gibi fonksiyonlar aracılığıyla string 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. @@ -45,15 +45,15 @@ object-src 'none'; - **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-ancestors**: Geçerli sayfayı gömebilecek kaynakları belirtir, ``, ` // The bot will load an URL with the payload @@ -583,15 +583,15 @@ document.querySelector("DIV").innerHTML = - Bu URL daha sonra CSP tarafından **izin verilmeyen** bir gizli URL'ye (örneğin, `https://usersecret.example2.com`) yönlendirir. - `securitypolicyviolation` olayını dinleyerek, `blockedURI` özelliğini yakalayabilirsiniz. Bu özellik, engellenen URI'nin alan adını açığa çıkararak, ilk URL'nin yönlendirdiği gizli alan adını sızdırır. -Chrome ve Firefox gibi tarayıcıların CSP ile ilgili iframeleri ele alma konusunda farklı davranışlar sergilediğini belirtmek ilginçtir; bu durum, tanımsız davranış nedeniyle hassas bilgilerin sızdırılmasına yol açabilir. +Chrome ve Firefox gibi tarayıcıların CSP ile ilgili iframeleri ele alma konusunda farklı davranışlar sergilediğini belirtmek ilginçtir; bu da tanımsız davranış nedeniyle hassas bilgilerin sızdırılmasına yol açabilir. -Başka bir teknik, gizli alt alan adını çıkarmak için CSP'yi istismar etmeyi içerir. Bu yöntem, ikili arama algoritmasına dayanır ve belirli alan adlarını kasıtlı olarak engelleyerek CSP'yi ayarlamayı gerektirir. Örneğin, gizli alt alan adı bilinmeyen karakterlerden oluşuyorsa, CSP direktifini bu alt alan adlarını engelleyecek veya izin verecek şekilde değiştirerek farklı alt alan adlarını iteratif olarak test edebilirsiniz. İşte bu yöntemi kolaylaştırmak için CSP'nin nasıl ayarlanabileceğini gösteren bir kesit: +Başka bir teknik, gizli alt alan adını çıkarmak için CSP'yi istismar etmeyi içerir. Bu yöntem, belirli alan adlarını kasıtlı olarak engelleyerek CSP'yi ayarlamaya ve ikili arama algoritmasına dayanır. Örneğin, gizli alt alan adı bilinmeyen karakterlerden oluşuyorsa, CSP direktifini bu alt alan adlarını engellemek veya izin vermek için değiştirerek farklı alt alan adlarını yinelemeli olarak test edebilirsiniz. İşte bu yöntemi kolaylaştırmak için CSP'nin nasıl ayarlanabileceğini gösteren bir kesit: ```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 hangi isteklerin engellendiğini veya izin verildiğini izleyerek, gizli alt alan adındaki olası karakterleri daraltabilir ve nihayetinde tam URL'yi ortaya çıkarabilirsiniz. -Her iki yöntem de CSP uygulamasının ve tarayıcılardaki davranışının inceliklerinden yararlanarak, görünüşte güvenli politikaların nasıl istemeden hassas bilgileri sızdırabileceğini göstermektedir. +Her iki yöntem de CSP uygulamasının ve tarayıcılardaki davranışının inceliklerini kullanarak, görünüşte güvenli politikaların nasıl istemeden hassas bilgileri sızdırabileceğini göstermektedir. [**buradan**](https://ctftime.org/writeup/29310) bir ipucu. @@ -599,18 +599,18 @@ Her iki yöntem de CSP uygulamasının ve tarayıcılardaki davranışının inc ### Çok fazla parametre olduğunda PHP Hataları -Bu [**videoda yorumlanan son teknik**](https://www.youtube.com/watch?v=Sm4G6cAHjWM) göre, çok fazla parametre göndermek (1001 GET parametresi, ancak POST parametreleriyle ve 20'den fazla dosyayla da yapılabilir). PHP web kodunda tanımlı olan **`header()`** **gönderilmeyecek** çünkü bu bir hataya neden olacaktır. +Bu [**videoda yorumlanan son teknik**](https://www.youtube.com/watch?v=Sm4G6cAHjWM) göre, çok fazla parametre göndermek (1001 GET parametresi, ancak POST parametreleriyle ve 20'den fazla dosyayla da yapabilirsiniz). PHP web kodunda tanımlı olan **`header()`** **gönderilmeyecek** çünkü bu bir hata tetikleyecektir. ### PHP yanıt tamponu aşırı yüklenmesi -PHP, varsayılan olarak **yanıtı 4096** bayt olarak **tamponlama** ile bilinir. Bu nedenle, PHP bir uyarı gösteriyorsa, **uyarıların içine yeterli veri sağlayarak**, **yanıt** **CSP başlığından önce** **gönderilecektir**, bu da başlığın göz ardı edilmesine neden olur.\ +PHP, varsayılan olarak **yanıtı 4096** bayt olarak **tamponlamasıyla** bilinir. Bu nedenle, PHP bir uyarı gösteriyorsa, **uyarılar içinde yeterli veri sağlayarak**, **yanıt** **CSP başlığından önce** **gönderilecektir**, bu da başlığın göz ardı edilmesine neden olur.\ Bu durumda, teknik esasen **CSP başlığının gönderilmemesi için yanıt tamponunu uyarılarla doldurmaktan** ibarettir. [**bu yazıdan**](https://hackmd.io/@terjanq/justCTF2020-writeups#Baby-CSP-web-6-solves-406-points) bir fikir. ### Hata Sayfasını Yeniden Yazma -[**bu yazıdan**](https://blog.ssrf.kr/69) anlaşıldığına göre, bir hata sayfasını (potansiyel olarak CSP olmadan) yükleyerek ve içeriğini yeniden yazarak bir CSP korumasını aşmak mümkün görünmektedir. +[**bu yazıdan**](https://blog.ssrf.kr/69) anlaşıldığına göre, bir hata sayfasını (potansiyel olarak CSP olmadan) yükleyerek ve içeriğini yeniden yazarak CSP korumasını aşmak mümkün görünmektedir. ```javascript a = window.open("/" + "x".repeat(4100)) setTimeout(function () { @@ -619,20 +619,20 @@ a.document.body.innerHTML = ` ```