Information Security/Hacking

파일 다운로드 취약점 (File Download Vulnerability)

Project_S 2021. 2. 15. 17:49
반응형

파일 다운로드 동작 방식

* 파일 다운로드 취약점 : 웹 상 파일 다운로드 시, 경로 및 파일명을 파라미터로 받아 처리하는 경우, 적절한 필터링이 없어 경로 및 파일명 조작이 가능할 시, 허용되지 않은 파일을 다운 받을 수 있는 취약점

 

 

 

* Directory Traversal Attack : Traversal은 여기저기 이동한다는 의미로, 허가되지 않은 디렉터리나, 파일 경로를 이동하며 접근하는 공격

 

 

 

* 취약점 판단 기준 : URL/파라미터 조작을 통해 임의 파일 경로 접근, 또는 파일 다운로드가 가능할 시, 취약

 

 

 

* 대응책

1) 허용하는 경로 이외에 디렉터리와 파일에 접근할 수 없도록 처리(문자열 필터링 등 블랙리스트 기반 차단 적용)
- (유닉스/리눅스) ../, ./
- (윈도우) ..\, .\

// 다운로드 파일명에 대해 블랙 리스트 기반 차단 적용 함수 생성
function check_download($file){
	// 허용하지 않을 문자 블랙 리스트 지정 (../, ./, %, ..\, .\ 등)
    $black_list = array('\,\,\/','\,\/','\%','../','./');
    $lowerFile = strtolower($file);
    for($i=0; $i<count($black_list); $i++){
    	$is_unsafe=eregi($black_list[$i],$lowerFile);
        if($is_unsafe){ break; }
    }
    return $is_unsafe;
}
~~~

if(trim($real_name) != ""){
	if(check_download($real_name)){ // 블랙리스트 문자 포함할 시 경고 메세지 출력
    	echo("<script>alert('다운로드를 허용하지 않는 파일명/경로 입니다.');<script>");
        exit;
    }
}
else{ exit; }
$file_path = "./data/".$real_name;
~~~

- 이 외에도 URL Encoding 등을 적용하여, 다양한 방식으로 경로 설정 및 공격을 하므로, 철저한 차단 설정이 필요

반응형