취약점 분석

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
37 HTTP-Botnets: The Dark Side of a Standard Protocol! file 졸리운_곰 2019.09.21 352
36 DoS 공격 유형과 대응 방법 보안 이야기 / IT 토크 file 졸리운_곰 2017.11.17 199
35 Windows Memory Hacking Libraries file 졸리운_곰 2017.07.01 428
34 Memory Hacking Library List 졸리운_곰 2017.07.01 7037
33 [scraping] 스크래핑 해커뉴스 24 hour top hacker news file 졸리운_곰 2016.08.31 222
32 tor 네트워크 proxychains, : Kali Linux Tutorial: Setting Up ProxyChains + Tor For Anonymity and Security file 졸리운_곰 2016.08.08 3289
31 KB: How to install Tor as a Windows Service 졸리운_곰 2016.05.04 128
30 How to use Tor as a Socks5 proxy file 졸리운_곰 2016.05.04 890
29 Intro to the Dark Web, Advanced Home Server 졸리운_곰 2016.05.03 444
28 How to Make a .ONION Website Using Tor Network file 졸리운_곰 2016.05.03 260
27 Creating a Dark Web – Deep web website file 졸리운_곰 2016.05.03 176
26 해커팀 레파지토리 졸리운_곰 2016.04.17 247
25 Top 10 Android Hacking Apps and Tools Of 2015 for hackers and security researchers file 졸리운_곰 2016.04.17 338
24 Download 10 Best Android Hacking Apps for Android Mobile in 2016 file 졸리운_곰 2016.04.17 381
23 보안학습용 사이트 링크들... 졸리운_곰 2015.06.17 2365
22 칼리 리눅스 무선랭 해킹 : Wireless Lan Hacking on Kali Linux file 졸리운_곰 2015.05.31 1225
21 [쉘코드 작성 참고자료] x86 ASM 매뉴얼 file 졸리운_곰 2015.04.07 235
20 침투 테스트 : 마이크로소프트 블로그 file 졸리운_곰 2014.12.30 481
19 (1)_세계 해킹(방어)대회 기출문제 풀이(GoN동아리).pdf file 졸리운_곰 2014.12.21 881
18 해킹방어대회 문제풀이 보고서 - - Hischall 2013 - file 졸리운_곰 2014.12.21 457
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED