취약점 분석

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
29 [정보보안 기사 - 국가기술자격] [Kali Linux] Dos(Denial of Service) 공격 및 방어 file 졸리운_곰 2023.07.30 168
28 2018년도 국가공인 산업보안관리사(공인 제2016-5호, 산업통상자원부 장관) 자격검정시험 연간일정 안내 졸리운_곰 2018.01.17 164
27 정보보안기사 1차 필기 1차 시험, 2차 시험 기출문제 file 졸리운_곰 2017.09.23 250
26 2017년 9회 정보보안기사 실기 가답안 졸리운_곰 2017.09.23 346
25 시스템 취약점 점검도구 선정 지침 file 졸리운_곰 2017.09.10 181
24 정보보안기사 요약 정리.pdf file 졸리운_곰 2017.08.25 394
23 정보보안 기사_산업기사 정보보안 관리 및 법규 요약.pdf file 졸리운_곰 2017.08.25 300
22 정보보안기사 실기 기출문제 1,2,3,4 회 file 졸리운_곰 2016.10.23 1058
21 정보보안기사 요약 자료 pdf file 졸리운_곰 2016.10.23 5606
20 제8회 정보보안기사필기결과 secret 졸리운_곰 2016.10.15 0
19 정보보안 국가기술자격검정 최종합격 현황 중요 file 졸리운_곰 2016.08.31 335
18 정보보안기사 실기 준비요령 file 졸리운_곰 2015.05.23 1229
17 제5회 정보보안기사 1차 필기 결과 file 졸리운_곰 2015.04.17 644
16 위험분석 방법론 졸리운_곰 2015.01.17 489
15 Cisco 장비에서 ACL 설정을 해보자! file 졸리운_곰 2014.11.17 639
14 CCNA/CCNP 자료 졸리운_곰 2014.11.17 578
13 [알아봅시다] OTP one time password 란? file 졸리운_곰 2014.11.17 616
12 * PKI 조사 file 졸리운_곰 2014.11.17 274
11 * SET 결제시스템 조사 file 졸리운_곰 2014.11.17 517
10 정보보안기사 실기 기출 [1회/2회/3회] file 졸리운_곰 2014.10.28 8602
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED