CRLF Injection
Last updated
Last updated
Nedir?
Web tarayıcısı sunucuya bir istekte bulunduğunda sunucu, yanıt olarak HTTP header’ları ve web sitesinin içeriğini birlikte gönderir. Söz konusu HTTP header’lar ve HTML yanıtı(web sitesinin içeriği) birtakım özel karakterler yardımıyla birbirlerinden ayırılırlar. Bu karakterler carriage return(satır başı) ve line feed(yeni satır) karakterleri olarak bilinir. Ayrıca kısaltılmış hali CRLF’dir.
Sunucu, yeni bir header başladığında, bir başkasının CRLF ile bittiğini bilir. Ayrıca bir web uygulamasına ya da kullanıcıya yeni satırın bir dosya ya da bir metin bloğunda başladığını da söyleyebilir.
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 carrige return, line feed karakterlerini ya da ikisini birlikte girer.
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. Bir CRLFCRLF kombinasyonu tarayıcıya header’ın sona erdiğini ve body’nin başladığını söyleyecektir. Böylelikle saldırgan, HTML kodun bulunduğu yanıt body’sine veri yazabilir duruma gelir. Bu da Cross Site Scripting (XSS) açığına neden olur.
Örnek olarak, isteğe bağlı bir header set eden bir uygulama hayal edelim:
Yukarıdaki header’ın aldığı değer “name” 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:
Yukarıdaki ifade, saldırıya maruz kalan domainin kontekstinde bir pop-up gösterecektir.
Tool:
Ana İçerik REF: