본문 바로가기
Web/Webhacking

파일 업로드 공격 및 우회 기법

by jjudy 2022. 4. 1.

파일 업로드 우회 기법

 

①  Proxy 툴을 이용해 확장자 검사 우회

  • 파일타입 변조 등의 우회 공격을 통해 확장자 검사를 피하는 것
  • 업로드 시 파일 유형 정보를 알려주는 MIME는 Content-Type, MIME-Version, Content-Transfer-Encoding 등 세 가지 헤더 정보로 구성
  • MIME 형식은 "파일 종류/파일 포맷" 형태로 정의

 

 

MIME 타입 - HTTP | MDN

MIME 타입이란 클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘입니다: 웹에서 파일의 확장자는 별  의미가 없습니다. 그러므로, 각 문서와 함께 올바른 MIME 타입을 전송하도

developer.mozilla.org

 

 

  IIS 취약점을 이용한 파일 업로드

  • CGI 와 관련된 확장자 검사 우회 취약점으로 인해 임의의 파일을 업로드할 수 있는 취약점
  • IIS 6.0/5.1/5.0/4.0/3.0/2.0/1.0  에서 발견됨
  • URL에서 URI와 파라미터를 구분하는 문자인 세미콜론과 물음표를 이용해 우회   예) webshell.asp;jpg 

 

 

③  NULL을 이용한 파일 업로드

  • C언어에서 NULL(%00) 문자는 문자열의 끝을 의미
  • 문자열에 NULL 문자 삽입 시 파일명의 끝으로 인식
  • %zz 도 종단 문자로 리눅스 시스템일 경우 우회

 

 

 

④  확장자 대소문자 구분을 통한 우회

  • 서버에서는 php와 PHP 둘 다 php 파일로 인식함
  • 소스 코드에서는 대소문자를 구분하기 때문에 .pHP, .pHp 이런식으로 우회

 

 

 

⑤  확장자 필터링이 있음에도 불구하고 확장자 우회

  • .asp 확장자  →  .cer    .cdx    .asa
  • .php 확장자  →  .php3   .html   .htm
  • .jsp 확장자 →  .war   .jspx   .jsv   .jsw

 

 

 

⑥  .htaccess 설정

  • .htaccess 는  아파치 웹 서버의 디렉터리를 설정하는 기본 파일
  • 디렉터리 내 파일이 실행될 때 모두 .htaccess 를 거치게 되므로 해당 설정 파일을 이용해 디렉터리 별로 설정을 변경해줄 수 있음
  • httpd.conf 서버설정 파일에서 AllowOverride 지시자 부분을 ALL 로 설정, Addtype 설정을 변경해줌

 

 

⑦  HTTP 메소드 악용

  • HTTP 메소드는 시스템 권한설정 및 불필요한 메소드(PUT, DELETE 등) 의 지원으로 인해 쉘 코드 삽입 및 홈페이지 변조 등에 악용 될 수 있음

 

 

 

파일 업로드 취약점 대응 방안

 

①  업로드 파일 타입 및 확장자 검증은 화이트리스트 방식을 적용한다.

 

②  업로드 파일을 위한 전용 디렉터리를 별도로 생성한다.

 

③  업로드 파일의 확장자를 검토하여 적절한 파일인지 검사하는 루틴을 삽입하여, 적합한 파일의 확장자 이외의 파일에 대해 업로드가 불가능하도록 하는 필터링 규칙을 서버에서 구현한다.

 

④  AddType 지시자를 이용해 jsp, asp, php 등 서버 사이드 스크립트 확장자를 text/html로 MIME Type을 재조정하여 Server Side Script가 실행되지 않도록 설정한다.

AddType 지시자로 text/html로 MIME Type 재조정

 

댓글