* **Şirketinizi HackTricks'te reklamını görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'u takip edin**.
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı Lehçe yazılı ve sözlü gereklidir_).
Carriage Return (CR) ve Line Feed (LF), birleşik olarak CRLF olarak bilinen özel karakter dizileridir. HTTP protokolünde bir satırın sonunu veya yeni bir satırın başlangıcını belirtmek için kullanılırlar. Web sunucuları ve tarayıcılar, CRLF'yi HTTP başlıkları ile yanıtın gövdesi arasında ayırt etmek için kullanır. Bu karakterler, Apache ve Microsoft IIS gibi çeşitli web sunucusu türleri arasında HTTP/1.1 iletişiminde evrensel olarak kullanılır.
CRLF enjeksiyonu, CR ve LF karakterlerinin kullanıcı tarafından sağlanan girişe eklenmesini içerir. Bu eylem, sunucuyu, uygulamayı veya kullanıcıyı, enjekte edilen diziyi bir yanıtın sonu ve başka bir yanıtın başlangıcı olarak yorumlamaya yanıltır. Bu karakterler doğal olarak zararlı değildir, ancak yanlış kullanımları HTTP yanıt bölünmesine ve diğer kötü amaçlı faaliyetlere yol açabilir.
Bir yönetici panelindeki bir günlük dosyasını düşünelim, formatı şu şekildedir: `IP - Zaman - Ziyaret Edilen Yol`. Tipik bir giriş örneği şöyle görünebilir:
Bir saldırgan, bu günlüğü manipüle etmek için CRLF enjeksiyonunu kullanabilir. HTTP isteğine CRLF karakterleri enjekte ederek, saldırgan çıktı akışını değiştirebilir ve sahte günlük girişleri oluşturabilir. Örneğin, enjekte edilen bir dizi günlük girişini şu şekilde dönüştürebilir:
Saldırgan, kötü niyetli faaliyetlerini sunucu ortamında genellikle güvenilen bir varlık olan localhost gibi görünmesini sağlar. Sunucu, `%0d%0a` ile başlayan sorgunun bir parametre olarak yorumlar, `restrictedaction` parametresi ise ayrı bir giriş olarak ayrıştırılır. Manipüle edilmiş sorgu, meşru bir yönetici komutunu taklit eder: `/index.php?page=home&restrictedaction=edit`
HTTP Yanıt Bölünmesi, bir saldırganın HTTP yanıtlarının yapısını sömürdüğünde ortaya çıkan bir güvenlik açığıdır. Bu yapı, başlıkları gövdeden ayıran belirli bir karakter dizisi olan Taşıma İşareti (CR) ve Satır Beslemesi (LF) tarafından oluşturulan CRLF olarak adlandırılan bir dizi kullanır. Bir saldırgan, bir CRLF dizisini bir yanıt başlığına yerleştirmeyi başarırsa, ardışık yanıt içeriğini etkili bir şekilde manipüle edebilir. Bu tür manipülasyon ciddi güvenlik sorunlarına, özellikle Cross-site Scripting (XSS) sorunlarına yol açabilir.
1. Uygulama şu şekilde özel bir başlık ayarlar: `X-Custom-Header: UserInput`
2. Uygulama, `UserInput` için değeri bir sorgu parametresinden alır, diyelim ki "user_input". Doğru giriş doğrulama ve kodlama eksikliği olan senaryolarda, bir saldırgan CRLF dizisini ve kötü amaçlı içeriği içeren bir payload oluşturabilir.
3. Bir saldırgan, özel olarak oluşturulmuş 'user_input' içeren bir URL oluşturur: `?user_input=Value%0d%0a%0d%0a<script>alert('XSS')</script>`
- Bu URL'de `%0d%0a%0d%0a`, CRLFCRLF'nin URL kodlanmış biçimidir. Sunucuyu CRLF dizisini eklemeye kandırarak, sunucunun ardışık kısmı yanıt gövdesi olarak işlemesini sağlar.
4. Sunucu, saldırganın girişini yanıt başlığında yansıtır, bu da kötü niyetli betiğin tarayıcı tarafından yanıt gövdesinin bir parçası olarak yorumlanmasına yol açar.
HTTP Başlık Enjeksiyonu, genellikle CRLF (Taşıma İşareti ve Satır Sonu) enjeksiyonu aracılığıyla istismar edilir ve saldırganlara HTTP başlıkları eklemelerine olanak tanır. Bu, XSS (Cross-Site Scripting) filtreleri veya SOP (Aynı Köken İlkesi) gibi güvenlik mekanizmalarını zayıflatabilir ve yetkisiz erişime, CSRF belirteçlerine veya çerez yerleştirme yoluyla kullanıcı oturumlarının manipülasyonuna yol açabilir.
Bir saldırgan, HTTP başlıklarını enjekte ederek CORS (Cross-Origin Resource Sharing) özelliğini etkinleştirebilir ve SOP tarafından uygulanan kısıtlamaları atlayabilir. Bu ihlal, kötü niyetli kaynaklardan gelen betiklerin farklı bir kökenden gelen kaynaklarla etkileşimde bulunmasına olanak tanır ve böylece korunan verilere erişebilir.
CRLF enjeksiyonu, tamamen yeni bir HTTP isteği oluşturmak ve enjekte etmek için kullanılabilir. Bu konuda dikkate değer bir örnek, PHP'nin `SoapClient` sınıfındaki zafiyettir, özellikle `user_agent` parametresi içinde. Bir saldırgan, bu parametreyi manipüle ederek ek başlıklar ve gövde içeriği ekleyebilir veya tamamen yeni bir HTTP isteği enjekte edebilir. Aşağıda, bu sömürünün bir PHP örneği bulunmaktadır:
Bu teknik ve potansiyel sorunlar hakkında daha fazla bilgi için [**orijinal kaynağa bakın**](https://portswigger.net/research/making-http-header-injection-critical-via-response-queue-poisoning).
Sonrasında, ikinci bir istek belirtilebilir. Bu senaryo genellikle [HTTP istek yığınlanması](http-request-smuggling/) içerir, sunucu tarafından enjeksiyon sonrası ek başlıklar veya gövde öğeleri eklenerek çeşitli güvenlik açıklarına yol açabilir.
1.**Kötü Amaçlı Önek Enjeksiyonu**: Bu yöntem, kötü amaçlı bir önek belirterek bir sonraki kullanıcının isteğini veya bir web önbelleğini zehirlemeyi içerir. Buna bir örnek:
2.**Tepki Sırası Zehirleme için Önek Oluşturma**: Bu yaklaşım, tamamlanmış ikinci bir isteği oluşturmak için son eklemelerle birleştirildiğinde bir önek oluşturmayı içerir. Bu, tepki sırası zehirlemesini tetikleyebilir. Bir örnek:
Bir platform, **bir HTTP isteğinden veri alıp bunu temizlemeden** bir **memcache** sunucusuna **istekler** yapmak için kullanıyorsa, saldırgan bu davranışı**yeni memcache komutları enjekte etmek** için istismar edebilir.
Örneğin, keşif edilen orijinal zayıflıkta, önbellek anahtarları kullanılarak bir kullanıcının hangi IP ve bağlantı noktasına bağlanması gerektiği döndürülüyordu ve saldırganlar, **önbelleği zehirleyecek** şekilde **memcache komutları enjekte** edebiliyorlardı ve kullanıcıların ayrıntılarını (kullanıcı adları ve şifreler dahil) saldırgan sunucularına gönderiyorlardı:
Dahası, araştırmacılar, memcache yanıtlarını ayrıştırarak saldırganın e-posta adresini bilmediği kullanıcılara saldırganın IP ve bağlantı noktalarını göndermek için kullanabildiklerini keşfettiler:
Doğrudan kullanıcı girişinden kaçınmak mümkün değilse, CR (Taşıma İşareti) ve LF (Satır Beslemesi) gibi özel karakterleri kodlamaya yönelik bir işlev kullanmayı sağlamak önemlidir. Bu uygulama, CRLF enjeksiyonu olasılığını önler.
Web uygulamalarında kullandığınız programlama dilini düzenli olarak en son sürüme güncelleyin. HTTP başlıklarını ayarlamakla görevli işlevler içinde CR ve LF karakterlerinin enjeksiyonunu varsayılan olarak engelleyen bir sürümü tercih edin.
Eğer **hacking kariyeri** ile ilgileniyorsanız ve hacklenemez olanı hacklemek istiyorsanız - **işe alıyoruz!** (_akıcı şekilde Lehçe yazılı ve konuşma gereklidir_).
* Şirketinizi HackTricks'te **reklamınızı görmek veya HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz olan [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'yi keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'da takip edin**.