취약점 분석

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

 

 

 

 

 

1) 취약점 설명

 

CWE-113

HTTP Request에 있는 파라미터가 HTTP Response의 응답헤더로 다시 전달되는 경우 파라미터 내 개행문자 CR(Carriage Return, %0D) 혹은 LF(Line Feed %0A)가 존재하면 HTTP 응답이 분리될 수 있다. HTTP 응답 분할(HTTP Response Splitting) 공격은 이러한 취약점을 통해 응답 메시지에 악의적인 코드를 주입함으로써 XSS 및 캐시를 훼손하는 취약점이다.

 

2) 취약점 분석

 

- HTTP 헤더 원리

HTTP 헤더는 일반적으로 웹 브라우저(클라이언트)가 서버에 요청하고(클라이언트 측 Request), 웹 브라우저에 표기하기 위해 서버(서버 측 Response)로 부터 다시 받은 응답을 해석한다.

 

웹 브라우저는 다음과 같은 요청을 보낸다.

 

​[그림 1] 웹 브라우저 요청

 

이에 대해 서버는 다음과 같은 응답을 보내고, 웹 브라우저는 응답을 해석하여 웹 페이지를 출력한다.

 

​[그림 2] 서버 응답

 

 

- HTTP 응답 분할 취약 테스트 환경 구성

HTTP 응답 분할 취약점 테스트를 위해 웹 서버 MIcrosoft-IIS/5.1과 asp 언어를 사용하여 게시판에 있는 글을 조회하는 모듈을 구현하였다. 글 조회 시 Request 패킷의 파라미터 값이 Response 패킷 헤더에 삽입 되도록 하였다.

게시판에서 해당 글을 선택했을 경우, 글 번호 파라미터와 함께 글 상세보기(board_view.asp) 페이지로 전환하는 소스코드는 다음과 같다.

 

[그림 3] 게시판 리스트에서 해당 글 클릭 시 소스코드

 

 

글 상세보기(board_view.asp) 페이지에서 클릭한 글의 번호를 받고, 헤더에 추가적으로 입력할 파라미터 test 를 정의한다.

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

[그림 4] 클릭한 글 상세보기

 

 

 

- HTTP 응답 분할 취약 테스트

게시글 열람 시 Request 패킷 내 파라미터 num, test가 전송됨을 확인한 후, test 파라미터에 HTTP 응답 분할을 위한 공격구문을 추가한다.

 

□ 공격 구문 :

%0d%0aContentLength:%200%0d%0d%0a%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2019%0d%0a%0d%0aAttack 

 

​[그림 5] 게시판 글 선택

 

[그림 6] 파라미터 내 HTTP 분할 공격 구문 삽입

 

 

HTTP 응답 분할 공격 구문을 삽입하여 전송한 결과, 서버 측에서 공격 코드에 있는 파라미터(/board_view.asp?num=5&test=3 이후)를 그대로 받아서 처리하므로 Response 패킷 내 헤더(HTTP/1.1 200 OK 이하)가 2개 존재하게 된다.

 

[그림 7] HTTP 응답 분할

 

 

두 번째 응답 값 내 <htm>Attack</html>이 실행되고, 그 이하 첫 번째 응답 값 일부를 모두 문자열로 인식하여 문자 그대로 화면에 출력한다. 또한 첫 번째 응답 값인 <html><head><title> 게시물 읽기 <title> 이하가 실행되어 웹 브라우저에 출력된다.

 

[그림 8] 두 응답 값 확인

 

 

[그림 9] 두 개의 응답에 대한 결과

 

 

 

3) 대응방안

 

 

HTTP 응답 헤더에 입력되는 값에 대하여 개행문자 CR(Carriage Return, %0D) 혹은 LF(Line Feed, %0A)를 제거/치환하는 등 입력에 대한 유효성 검사를 실시함으로써 헤더가 두 개 이상으로 나뉘어지는 것을 방지한다.

예) String test = test.replaceAll("\r" , " ").replaceAll("\n" , " "); 

 

 

 

 

- 글 : WH팀 김민희

 

[출처] http://blog.naver.com/PostView.nhn?blogId=skinfosec2000&logNo=220694143144&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=true&from=search

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
공지 침투테스트(취약점검점검, 모의해킹) 문의 / 답변 졸리운_곰 2017.12.10 28360
197 [4.28 버그리포트] CVE-2017-8301 外 file 졸리운_곰 2017.04.28 133
196 사이버 위협 첩보 전문가가 되는 세 가지 방법 file 졸리운_곰 2017.04.27 127
195 손해배상, 2차 피해 등 ‘여기어때’ 해킹사고 후폭풍 거세지나 file 졸리운_곰 2017.04.27 102
194 인터폴, 아세안 지역서 C&C 서버 9000여개 적발 file 졸리운_곰 2017.04.26 142
193 한국 비트코인 거래소 ‘야피존’ 해킹!...55억 규모 탈취 file 졸리운_곰 2017.04.26 153
192 [4.24 버그리포트] CVE-2015-1521 外 file 졸리운_곰 2017.04.25 108
» HTTP 응답 분할(HTTP Response Splitting, CRLF) 취약점 file 졸리운_곰 2017.04.25 915
190 우버, 극비 프로그램으로 경쟁사 `리프트` 정보 몰래 빼내 졸리운_곰 2017.04.15 161
189 CSRF 졸리운_곰 2017.04.09 339
188 CSRF공격 file 졸리운_곰 2017.04.09 6622
187 디도스 이어 디페이스 공격! 中 해커들의 사이버 공습 본격화되나 file 졸리운_곰 2017.03.04 137
186 가전제품·자동차 해킹 위험 커져...사이버범죄자=도둑 시대 오나 file 졸리운_곰 2017.03.04 126
185 [사례로 보는 개인정보 침해] ⑩여행상품 전화상담 후, 문자·전화가 계속 와요 file 졸리운_곰 2017.03.04 137
184 차세대 사이버 전쟁은 선한 AI와 악한 AI간의 대결? file 졸리운_곰 2017.03.04 130
183 딥웹 .onion 익명 사이트 호스팅하기 (Tor를 사용한 .onion 주소 할당 방법) file 졸리운_곰 2017.02.11 1248
182 소프트웨어 개발보안(시큐어 코딩) 관련 가이드 file 졸리운_곰 2017.02.11 406
181 개인정보취급방침 만들기를 도와주는 웹사이트 file 졸리운_곰 2017.02.10 158
180 모바일 앱 개발과정에서 참고해야 할 프라이버시 보호 수칙 졸리운_곰 2017.02.10 215
179 SQL Injection 공격과 방어 방법 - php, asp 등 file 졸리운_곰 2017.01.17 1475
178 정보보안기사 실기 기출문제 1,2,3,4 회 file 졸리운_곰 2016.10.23 1058
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED