CRLF NEDİR ?
carriage return(CR) ve line feed(LF) karakterlerinin kısaltılmış hali CRLF’dir.
CR ve LF, işletim sistemlerinde ve HTTP dahil İnternet protokollerinde bir satırın sonunu belirtmek için (birlikte veya ayrı ayrı) kullanılır.
CRLF INJECTION NEDİR ?
Saldırgan, bir CRLF Injection saldırısında sunucuyu, web uygulamasını ya da kullanıcıyı bir nesnenin sonlandığı diğerinin ise
başladığı yönünde kandırmak için kullanıcı input’una CR(carrige return), LF(line feed) karakterlerini ya da ikisini birlikte girer.
Bu karakterler zararlı değildir ancak yanlış kullanımları HTTP response splitting ve diğer kötü amaçlı faaliyetlere yol açabilir.
KULLANIM AMAÇLARI :
CRLF injection’un iki kötü amaçlı kullanımı vardır: log injection ve HTTP response splitting.
Ayrıca saldırganlar, başta cross-site scripting (XSS) olmak üzere diğer türdeki güvenlik açıklarına geçmek için CRLF injection açığını kullanabilir.
LOG INJECTION
Saldırgan,günlük dosyasına sahte giriş ekleyerek adminlerin kafasını karıştırmak için
CRLF karakterlerini web sunucusu günlük dosyalarına enjekte eder.
örnek :
Apache gibi birçok web sunucusu NCSA Ortak Günlük Formatı’nı kullanır. Ortak Günlük Formatı girişlerinin formatı her zaman aynıdır:
|
örneğin hedef site şu olsun :
günlük girişi şu şekilde görünecektir :
|
url kısmına +%20HTTP%2F1.0%22%20200%20984%0A%0A10.0.23.30%20%20admin%20%5B01%2FMay%2F2024%3A12%3A38%3A50%20%2B0100%5D%20%22GET%20%2Fadmin.php%3Fuserid%3D12
eklediğimiz zaman (url decoder/encoder yardımıyla düzenleyebilirsiniz.)
günlük girişi şu şekilde görünücektir :
|
HTTP RESPONSE SPLITTING
Bir saldırgan, HTTP yanıt başlığının ve yanıt gövdesinin CRLF karakterleri ile ayrılmasından dolayı buraya bir enjeksiyon yapmayı deneyebilir.
saldırgan 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ülasyonlar ciddi güvenlik sorunlarına, özellikle de Cross-site Scripting (XSS) sorunlarına yol açabilir.
HTTP RESPONSE SPLITTING TO XSS
Örnek olarak, isteğe bağlı bir header set eden bir uygulama hayal edelim:
|
Yukarıdaki header’ın aldığı değer “user_input” adındaki GET parametresine set edilir. Eğer URL encoding işlemi uygulanmamışsa ve değer direkt olarak
header’a yansıtılıyorsa bir saldırganın daha önce bahsedilen CRLFCRLF kombinasyonunu araya ekleyerek tarayıcıya istek body’sinin başladığını
söylemesi mümkün hale gelir. Bu şekilde XSS payload’u gibi verilerin eklenebilmesi kaçınılmaz olur. Örneğin:
|