반응형
0. 개요
HTTP 응답 분할에 대해 알기전 CR, LF가 무엇인지 HTTP request, response가 어떤식으로 구성되어 응답 분할 문제가 발생하는지 공부한다.
1. CRLF의 정의
CR(Carrige Return: \r): 커서의 위치를 현재 줄의 맨 처음으로 보내는 기능
LF(Line Feed: \n): 커서를 다음 줄로 옮기는 기능
CR+LF: 다음줄의 제일 처음위치를 의미.
2. HTTP message 구조
http요청은 다음 구조처럼 이루어져 있다 이중 CRLF 공백 으로 이루어진 줄이 header와 body를 구분하는데 이러한 특성으로 인해 CRLF 취약점이 생긴다.
3. 예시
다음 예제는 외부의 입력값을 사용하여 반환되는 쿠키의 값을 설정하고 있다. 만약 공격자가 값을 Wiley Hacker \r\nHTTP/1.1 200 OK\r\n를 authorName의 값으로 설정할 경우, 다음과같은 두개의 페이지가 전달된다.
따라서 다음과 같이 CRLF의 여부를 체크하고 replaceAll을 이용하여 이를 제거하여 HTTP응답 분리를 방지한다.
반응형
'프로그래밍 > 시큐어코딩' 카테고리의 다른 글
[시큐어 코딩] #10 보호 메커니즘을 우회할 수 있는 입력값 변조 (0) | 2020.07.02 |
---|---|
[시큐어 코딩] #9 정수 오버플로우 (0) | 2020.07.02 |
[시큐어 코딩] #7 크로스사이트 요청 위조 / CSRF (0) | 2020.07.02 |
[시큐어 코딩] #6 신뢰되지 않는 URL 주소로 자동 연결 (0) | 2020.07.02 |
[시큐어 코딩] #5 위험한 형식 파일 업로드 (0) | 2020.07.02 |