( 1 ) 취약점 정의
일명 Apache Killer 라고도 하며 Apache HTTP Sever 에서 Byte Range 필터에 존재하는 오류로 인한 서비스 거부 공격 취약점을 말함.
Range 필드를 포함한 요청(Request)을 보낼 때 공격자가 많은 범위의 서로 다른 요청(Request)을 보내면 비정상적인 많은 요청을 처리하는 과정에서 많은 CPU 와 메모리를 소모하게 되고 결국 무한루프에 빠진 것처럼 시스템을 불안하게 만드는 것임.
참고 사이트 :
http://dailysecu.com/news_view.php?article_id=495
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-3192
http://www.exploit-db.com/exploits/17696/
http://httpd.apache.org/security/CVE-2011-3192.txt
http://truefeel.tistory.com/200
http://tisiphone.tistory.com/246?viewbar
http://blog.daum.net/donfig/3163886
( 2 ) Range 필드
기본 형식 [ Range: bytes= n-m ]
문서가 요구하는 부분적인 범위를 명시하며 Range 필드를 사용하여 PDF 나 동영상 등의 일부를 로딩할 수 있음.
여러 개의 범위는 세미콜론으로 구분하여 나열함.
만약 쉼표로 구별된 바이트 범위인 첫 번째 숫자가 없다면 범위는 문서의 끝에서부터 없어진다고 가정함.
만일 두번째 숫자가 없다면 범위는 끝에서 n 바이트까지이며 첫 번째 바이트는 0 바이트임.
참고 사이트 :
http://npcode.com/blog/archives/762
http://ememomo.tistory.com/84
( 3 ) 실습
실행 순서는 아래와 같음.
1. msfconsole
2. set rhosts 피해자IP (피해자IP 에 취약한 웹서버가 존재시)
3. run
공격 동영상 사이트 :
http://www.youtube.com/watch?v=gjm05u8p8Vo
http://www.youtube.com/watch?v=-zj2E0QjG1s
( 4 ) Packet Dump
... 가운데 생략
기본적으로 Range 필드는 첫 번째 바이트가 두 번째 바이트보다 같거나 작은 숫자이어야 하는데 공격 시도한 패킷에서는 이 법칙을 위반함. (Range: bytes=0-,5-0,5-1,5-2,5-3,5-4)
또한, 요청했던 Range 필드의 첫 번째 바이트를 중복해서 요청하고 있는 것을 알 수 있음.
응답 코드를 보면 HTTP 206 Partial Content (일부 내용) 결과값이 출력됨.
( 5 ) 방어법
Range 필드를 포함한 요청(Request)은 주로 대용량의 파일을 다운로드 하거나 이어받기 등 파일의 일부만을 다운로드하기를 원하거나 또는 P2P 등에서 파일의 일부만을 특정 서버에서 받고자 할 때 사용됨.
따라서 Range 필드를 포함한 요청(Request) 자체는 정상적인 요청이 있을 수 있으므로 차단해서는 안 됨.
패치하는게 제일 좋은 방법이며 최소 Apache 2.2.21 이상 패치를 권고함.
( 6 ) 영향력 확인
NSE (Nmap Scripting Engine) 를 이용하여 영향력 확인함.
사용법 : nmap --script http-vuln-cve2011-3192.nse -pT:<Port> <피해자 IP 및 호스트명>
관련 사이트 : http://nmap.org/nsedoc/scripts/http-vuln-cve2011-3192.html
============================================================
본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.
댓글 없음:
댓글 쓰기