파일 다운로드 취약점은 파일 다운로드 기능이 존재하는 웹에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 이를 적절히 필터링 하지 않으면 공격자가 이를 조작하여 허용되지 않은 파일을 다운 받을 수 있는 취약점이다. 공격자는 취약점을 이용하여 시스템 환경 설정 파일, 소스 코드 파일, DB 연동 파일 등 중요한 파일을 다운 받을 수 있다.

 

점검 방법

  - 게시판 또는 공지사항, 자료실 등에서 cgi, jsp, php 등의 프로그램을 이용하여 파일을 다운로드 받는 페이지가 있는지 조사한다.

 

  - 다음과 같이 파일 다운로드를 시도한다.

    * ../../../../etc/passwd

    * ../../../../winnt/win.ini

    * ../../../../boot.ini

    * ../../../../wp-config.php (워드프레스인 경우)

    * xx/direct_download.php?file=./direct_download.php

 

  - 인코딩을 적용하여 해당 파일 내용이 표시되는지 확인한다.

    * url 인코딩 : .(%2e), /(%2f), \(%5c)

    * 16bit 유니코드 인코딩 : .(%u002e), /(%u2215), \(%u2216)

    * 더블 url 인코딩 : .(%252e), /(%252f), \(%255c)

 

  - ..//, ....\\, 등을 적용하여 패턴을 반복하지 않음으로써 방화벽 우회를 시도한다.

 

  - null바이트 인젝션 시도한다.

    * ../../../../etc/passwd%0a.jpg

 

  - 특정 디렉터리나 파일을 먼저 입력한 후 탐색 문자열을 입력한다.

    * /was/tomcat/image/../../../../etc/passwd

 

 

대응방안

  - 외부에서 입력하는 파일 경로와 이름에 대해 허용하는 경로 이외의 디렉터리와 파일에 접근할 수 없도록 처리한다.

 

  - 외부 입력값에 대해 파일 경로를 변경할 수 있는 문자열에 대해 필터링한다.

 

  - php로 개발된 경우 php.ini의 내용 중 magic_quotes_gpc 항목을 on으로 설정하여 ".\와 ./" 입력 시 치환되도록 설정한다.

'Web Hacking > 이론적인 내용' 카테고리의 다른 글

Command Injection이란?  (0) 2017.09.29
파일 업로드 취약점이란?  (0) 2017.09.22
CSRF(Cross Site Request Forgery)란?  (0) 2017.09.08
XSS란?  (2) 2017.09.01
SQL Injection이란?  (0) 2017.08.24
블로그 이미지

꼴통보안인

,