파일다운로드 취약점 - Path Traversal
2023. 5. 31. 16:44ㆍ개발자료/Security
반응형
다운로드 대상 파일의 디렉토리를 벗어나 다른경로에 있는 파일까지 접근해 파일을 다운로드하거나 접근 가능한 것.
조치가이드
- 파일 다운로드시 허용된 경로 이외의 접근을 차단하고 특정 디렉토리의 파일만 다운로드가 가능하도록 설정
- 파일 경로 및 파일명을 데이터베이스에 저장하여 파일 다운로드 수행시, 파일 경로와 이름을 검증하도록 조치
- 다운로드 시 사용자 요청 메시지에 포함된 경로 조작 문자(.., /, \) 필터링
조치 - Path Traversal 문자열 체크
@ 서버단에서 상위 디렉토리로 이동하는 ../ 또는 ..\\ 문자열 존재여부를 확인한다.
// Java
String strFullPath = request.getParameter("filePath") + request.getParameter("fileName");
if(strFullPath.contains("../") || strFullPath.contains("..\\")){
// Path Traversal 취약점 확인
}
@ 전달받은 경로와 실제 경로의 값이 같은지 확인한다.
getCanonicalPath 반환값과 getAbsoutePath 반환값을 비교해서 Path Traversal 문자열이 존재하는지 확인한다.
getCanonicalPath : ./, ../ 등의 경로를 정리하고 절대 경로만 표현 => /path1/path2/file1.txt
getAbsoutePath : 입력된 경로만 표현 => /path1/path2/path3/../file1.txt
// Java
String strFullPath = request.getParameter("filePath") + request.getParameter("fileName");
File file = new File(strFullPath);
String strPathCanonical;
String strPathAbsolute;
try{
strPathCanonical = file.getCanonicalPath();
strPathAbsolute = file.getAbsolutePath();
if (strPathCanonical.equals(strPathAbsolute) == false){
// Path Traversal 취약점 확인
}
}catch (IOException e){
}
반응형
'개발자료 > Security' 카테고리의 다른 글
모바일 딥링크 취약점 (0) | 2023.08.10 |
---|---|
KISA - JavaScript 시큐어코딩 가이드 (0) | 2023.06.01 |
XSS(Cross Site Scripting) (0) | 2023.05.31 |
MITMProxy - OSX (0) | 2020.01.29 |