Information Security/Hacking

HTTP 응답 분할 취약점 (HTTP Response Splitting Vulnerability)

Project_S 2021. 2. 17. 04:20
반응형

\r(Carriage Return,%0D) / \n(Line Feed,%0A)

* HTTP 응답 분할 취약점 : Client의 HTTP 요청 파라미터(입력)값에 개행문자(CR. LF)가 포함되어 있을 때, HTTP 응답이 2개 이상으로 분리될 수 있으며, 이에 따라 공격자가 첫 응답을 종료시킨 후, 이후 응답에 악의적 코드를 삽입, 실행 할 수 있는 취약점

개행문자
- CR (Carriage Return, \r, %0D) : 커서의 위치를 맨 앞으로 이동 시키는 개행 문자
- LF (Line Feed, \n, %0A) : 커서를 다음 행으로 이동 시키는 개행 문자

 

 

 

* HTTP 응답 분할 취약점 동작 방식

코드를 천천히 잘 살펴보면 이해 가능...

1) 공격자는 쿠키 생성에 사용되는 cookieValue 요청 파라미터 조작(kiwi 값 삽입) 및 개행 문자를 통해 HTTP 응답 메세지 분할 시도

2) 서버 측 login.jsp 상 코드에 요청 파라미터값 검증 없이, 해당 값을 쿠키(nickname)로 설정, 응답 헤더에 담아 전달

3) 응답 헤더 쿠키(Set-Cookie: nickname)가 설정, 쿠키에 포함되어 있는 Content-Length: 0 헤더 이후, 개행문자들로 응답 메세지가 분할되어 처리(공격자 의도로 XSS 실행됨)

- 이 외에도, 클라이언트 요청 파라미터 값 설정과 서버측의 취약한 구성에 따라 HRS 다양한 방법으로 적용 가능

 

 

 

* 대응책

- 클라이언트 요청 파라미터(입력) 값이, 서버 프로그램에서 쿠키(Set-Cookie 응답 헤더)로 사용되거나, 리다이렉션(Redirection) 목적으로 Location 응답 헤더로 사용, 기타 응답 헤더 설정에 사용될 시, HRS가 발생하지 않게 적절한 필터링(특히 개행문자) 필요

 

반응형