취약점 분석

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
21 BIND DNS와 DHCP 보안 취약점 발견...업데이트 필수 file 졸리운_곰 2018.03.11 261
20 인텔 칩 내에서 설계 오류 발견된 이후 이틀간의 기록 file 졸리운_곰 2018.01.04 226
19 [4.28 버그리포트] CVE-2017-8301 外 file 졸리운_곰 2017.04.28 133
18 [4.24 버그리포트] CVE-2015-1521 外 file 졸리운_곰 2017.04.25 108
17 모의해킹 보고서 [2호]_주간취약점동향리포트_20120925.pdf file 졸리운_곰 2014.11.12 360
16 GNU Bash 원격명령 실행 취약점 대응방안 권고.pdf file 졸리운_곰 2014.10.27 266
15 Wordpress Frontend Upload Plugin - Arbitrary File Upload 졸리운_곰 2014.02.17 914
14 Wordpress Buddypress Plugin 1.9.1 - Privilege Escalation 졸리운_곰 2014.02.17 868
13 Daum Game 1.1.0.5 - ActiveX (IconCreate Method) Stack Buffer Overflow 졸리운_곰 2014.02.09 779
12 Android Browser and WebView addJavascriptInterface Code Execution 졸리운_곰 2014.02.09 1375
11 Apache Tomcat Manager Application Upload Authenticated Code Execution 졸리운_곰 2014.02.09 3157
10 NETGEAR ReadyNAS Perl Code Evaluation 졸리운_곰 2014.01.07 2016
9 Adobe Reader ToolButton - Use After Free 졸리운_곰 2014.01.07 1342
8 Moodle Remote Command Execution 가을의 곰을... 2013.11.06 1588
7 Apache + PHP 5.x - Remote Code Execution (Multithreaded Scanner v2) 가을의 곰을... 2013.11.06 1420
6 MS13-080 Microsoft Internet Explorer CDisplayPointer Use-After-Free 가을의 곰을... 2013.10.18 1536
5 Apple iOS 7.0.2 - Sim Lock Screen Display Bypass Vulnerability 가을의 곰을... 2013.10.17 1191
4 XAMPP 1.8.1 (lang.php, WriteIntoLocalDisk method) - Local Write Access Vulnerability 가을의 곰을... 2013.10.17 1260
3 Micorosft Internet Explorer SetMouseCapture Use-After-Free file 가을의 곰을... 2013.10.13 1151
2 Apache Tomcat/JBoss EJBInvokerServlet / JMXInvokerServlet (RMI over HTTP) Marshalled Object file 가을의 곰을... 2013.10.13 4162
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED