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