Articles

CRLF 주입 및 HTTP 응답 분할 취약점

CRLF 란 무엇입니까?

브라우저가 요청을 보내는 웹 서버,web 서버에서 답을 응답이 모두 포함하는 HTTP 응답 헤더와 실제 웹사이트의 콘텐츠,즉 응답체. HTTP 헤더와 HTML 응답(웹 사이트 콘텐츠)은 특정 특수 문자 조합,즉 캐리지 리턴 및 라인 피드로 구분됩니다. 짧게 그들은 또한 CRLF 로 알려져 있습니다.

웹 서버는 CRLF 를 사용하여 새로운 HTTP 헤더가 시작되고 다른 헤더가 끝나는 시점을 이해합니다. CRLF 는 웹 응용 프로그램이나 사용자에게 파일 또는 텍스트 블록에서 새 줄이 시작된다고 말할 수도 있습니다. CRLF 문자는 표준 HTTP/1.1 메시지이므로 Apache,Microsoft IIS 및 기타 모든 유형의 웹 서버에서 사용됩니다.

CRLF 주입 및 HTTP 응답 분할 취약점

CRLF 주입 취약점은 무엇입니까?

에 CRLF 주입 취약점을 공격하는 공격자 삽입에 모두 마을 반환하고 줄 바꿈 문자로 사용자 입력을 속 server,웹 응용 프로그램 또는 생각으로 사용자는 개체를 종료되고 다른 하나의 시작되었습니다. 이러한 CRLF 시퀀스는 악의적 인 문자가 아니므로 악의적 인 의도,HTTP 응답 분할 등에 사용할 수 있습니다.

CRLF 에 주입한 웹 응용 프로그램

웹 응용 프로그램에서는 CRLF 주입할 수 있는 심각한 영향에 따라서 응용 프로그램이 무엇을하는지와 하나의 항목입니다. 영향은 정보 공개에서 코드 실행,직접적인 영향 웹 응용 프로그램 보안 취약점에 이르기까지 다양합니다. 사실 CRLF 주입 공격할 수 있는 아주 심각한 영향을 웹 응용 프로그램에서도,그것은 결코에 나열된 OWASP Top10. 예를 들어 아래 예제에 설명 된대로 관리자 패널에서 로그 파일을 조작하는 것도 가능합니다.

의 예 CRLF 에 주입한 로그 파일

상상에서 로그 파일 관리 패널로 출력 스트림의 패턴 IP 간이 많이 경로를 아래와 같이:

123.123.123.123 - 08:15 - /index.php?page=home

경우 공격에 주입 CRLF 자에 HTTP 요청이 있을 변경하는 출력 스트림 및 가짜 로그 항목이 있습니다. 그는 변경할 수 있습에서 응답 웹 응용 프로그램을 뭔가를 아래와 같이

/index.php?page=home&%0d%0a127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit

%0d 고%0a 는 url 을 인코딩 형태의 CR LF. 따라서 로그 항목은 공격자가 해당 문자를 삽입하고 응용 프로그램이 표시 한 후에 다음과 같습니다:

IP 간이 많이 경로.

123.123.123.123 - 08:15 - /index.php?page=home&
127.0.0.1 - 08:15 - /index.php?page=home&restrictedaction=edit

따라서을 이용하여 CRLF 주입 취약점을 공격할 수 있는 가짜 항목에서 로그 파일을 교란하는 자신의 악의적인 작업입니다. 공격자는 문자 그대로 페이지 하이재킹을 수행하고 응답을 수정하고 있습니다. 예를 들어 상상 시나리오를 공격자는 관리자 비밀번호를 실행 restrictedaction 매개 변수에 의해서만 사용될 수 있습니다.문제는 관리자가 알 수없는 IP 가 restrictedaction 매개 변수를 사용했다는 것을 알게되면 뭔가 잘못되었다는 것을 알 수 있습니다. 그러나,이후 지금은 다음과 같은 명령에 의해 발행되었 localhost(고,따라서 아마 누군가에 의해 액세스하는 서버는 관리자)이 보이지 않는 의심스러운입니다.

%0d%0a 로 시작하는 쿼리의 전체 부분은 서버에서 하나의 매개 변수로 처리됩니다. 후에는 또 다른&매개 변수 restrictedactionwhich 구문 분석하여 서버로의 또 다른 매개 변수입니다. 효과적으로 이것은 다음과 같은 쿼리 일 것입니다:

/index.php?page=home&restrictedaction=edit

HTTP 응답을 나누

Description

이후의 헤더는 HTTP 응답하고 몸으로 구분해 CRLF 문자를 공격하려고 할 수 있습에 주입니다. CRLFCRLF 의 조합은 헤더가 끝나고 본문이 시작된다는 것을 브라우저에 알려줍니다. 즉,그는 이제 html 코드가 저장된 응답 본문 안에 데이터를 쓸 수 있습니다. 이로 인해 교차 사이트 스크립팅 취약점이 발생할 수 있습니다.

XSS 로 이어지는 HTTP 응답 분할의 예

예를 들어 사용자 정의 헤더를 설정하는 응용 프로그램을 상상해보십시오:

X-Your-Name: Bob

헤더의 값은”name”이라는 get 매개 변수를 통해 설정됩니다. 이 없으면 URL 을 인코딩 장소에서 값에 직접 반영 안에 헤더를 수 있습 공격자를 삽입하려면 위에서 언급한 조합의 CRLFCRLF 을 말하는 브라우저는 요청 본문이 시작됩니다. 는 방법으로 그는 그를 삽입 할 수 있는 데이터와 같은 XSS 페이로드,예를 들어,

?name=Bob%0d%0a%0d%0a<script>alert(document.domain)</script>

위의를 표시하는 알림창에서의 컨텍스트 공격을 도메인입니다.

HTTP 헤더를 주입

Description

을 이용하여 CRLF 주입할 수 있도 삽입하는 HTTP 헤더에 사용 될 수 있는 패배하는 보안 메커니즘과 같은 브라우저의 XSS 필터 또는 동일한 원산지 정책이 있습니다. 이를 통해 공격자는 CSRF 토큰과 같은 민감한 정보를 얻을 수 있습니다. 그는 또한 쿠키를 설정하는 악용될 수 있습 로그인하여 피해자에서 공격자의 계정이나 이용하여 그렇지 않으면 unexploitable cross-site scripting(XSS)취약성을 검사합니다.

의 예 HTTP 헤더를 주입을 추출하는 중요한 데이터

경우 공격에 주입하는 HTTP 헤더 활성화 CORS(원산지 자원을 공유하는)을 수있는,자바 스크립트를 사용하는 리소스에 액세스가 그렇지 않으면 보호는 SOP(동일한 원산지 정책에)어떤 방지 사이트에서 다른 근원에 액세스할 수 있다.

미치는 영향을 CRLF 주입 취약점

미치는 영향의 CRLF 주사는 다양하고 또한 모두 포함 영향의 교차 사이트 스크립트를 정보 유출로 이어질 수 있습니다. 그것은 또한 수화 특정 보안에 대한 제한과 같은 XSS 필터와 동일한 원산지에서 정책을 피해자의 브라우저에 취약 떠나 악의적인 공격입니다.

을 방지하는 방법 CRLF/HTTP 헤더에서 주사 웹 응용 프로그램

는 최고의 예방 기술을 사용하지 않는 사용자가 입력 직접 내부 응답 헤더로 보낸다. 이것이 가능하지 않다면 항상 CRLF 특수 문자를 인코딩하는 함수를 사용해야합니다. 다른 좋은 웹 애플리케이션 보안 최고의 연습하는 것입 업데이트를 귀하의 프로그래밍 언어 버전을 허용하지 않는 CR LF 에 주입한 내부 기능을 설정하는 HTTP 헤더가 있습니다.

취약점을 분류하고 심각 테이블

분류 ID/심각도
PCI v3.2 6.5.1
OWASP 2013 A1
OWASP 2017 A1
CWE 93
CAPEC 105
WASC 24
HIPAA 164.306(a), 164.308(a)
ISO27001 A.14.2.5
CVSS:3.0
CVSS:3.0: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H
Netsparker Medium
Stay up to date on web security trends