공격의 본질은 응용 프로그램에서 단일 HTTP 메시지를 계획한 두 번째 HTTP 메시지가 형성되는 방식으로 C와 LF를 삽입하는 것입니다. CRLF 주입은 응용 프로그램에 의해 전송된 단일 HTTP 응답의 데이터를 변경하는 여러 가지 다른 공격에 사용되는 방법이지만(예: [2]), 이 경우 CRLF의 역할은 약간 다릅니다 – 첫 번째(계획된) HTTP 응답을 종료하기 위한 것입니다. HTTP 응답 메시지 (따라서 공격의 이름)를 형성하고 다른 (완전히 공격에 의해 만들어진, 응용 프로그램에 의해 완전히 계획되지 않은) HTTP 응답 메시지를 형성한다. 이 삽입은 응용 프로그램(웹 서버 위에서 실행)이 리디렉션, 쿠키 설정 또는 결국 사용자 데이터를 HTTP 응답 헤더의 일부로 만드는 기타 방식으로 검증되지 않은 사용자 데이터를 포함하는 경우 가능합니다. `HTTP 응답 분할의 본질은 웹 서버가 출력 스트림을 형성하도록 하는 단일 HTTP 요청을 보내는 공격자의 기능이며, 이 요청은 대상에서 하나의 응답대신 두 개의 HTTP 응답으로 해석됩니다. 이러한 유형의 취약점을 악용하여 여러 웹 응용 프로그램 기반 공격을 수행할 수 있습니다.` c) – 첫 번째 응답을 살펴보겠습니다. HTTP 프로토콜이 작동하는 방식은 – 1 요청 : 1 응답입니다. 이것이 바로 이 첫 번째 응답입니다. 전송된 첫 번째 요청에 대한 조작된 응답입니다. 즉 http://www.abc.com/index.php?lang=german. 이 응답과 그 내용에 대해 별로 걱정하지 않기 때문에 응답 헤더에서 콘텐츠 길이: 0을 설정하기만 하면 됩니다. CRLF 주입 공격의 가장 일반적인 두 가지 용도가 있습니다: 로그 중독 및 HTTP 응답 분할. 첫 번째 경우 공격자는 줄의 끝과 추가 줄을 삽입하여 로그 파일 항목을 위조합니다.
다른 공격을 숨기거나 시스템 관리자를 혼동하는 데 사용할 수 있습니다. 두 번째 경우 CRLF 삽입은 HTTP 응답에 HTTP 헤더를 추가하고 정보 공개로 이어지는 XSS 공격을 수행하는 데 사용됩니다. 전자 메일 헤더 주입이라는 유사한 기술을 사용하여 전자 메일에 SMTP 헤더를 추가할 수 있습니다. 성공적인 악용을 탑재하려면 응용 프로그램은 CR (캐리지 리턴, 또한 %0d 또는 r로 제공) 및 LF (라인 피드, 또한 헤더에 %0a 또는 n)문자가 주어진 입력을 허용해야하며 기본 플랫폼은 이러한 주입에 취약해야합니다 문자. 이러한 문자는 공격자가 응용 프로그램에서 보내려는 응답의 나머지 헤더와 본문을 제어할 수 있도록 할 뿐만 아니라 전적으로 제어하에 추가 응답을 만들 수 있도록 합니다. 응답 분할에 취약한 일부 코드가 실제로 PHP에서 어떻게 보이는지 간략하게 살펴보겠습니다. 우선, 원하는 언어를 선택할 수 있는 드롭다운이 포함된 작은 HTML 파일(respsplit1.html)이 있습니다. CRLF 주입 공격은 여러 유형의 주입 공격 중 하나입니다.