파일 다운로드 취약점 원리를 알아보기 앞서 절대 경로와 상대 경로부터 살펴보겠습니다
절대 경로
컴퓨터가 지정한 파일의 최초 경로를 절대 경로라고 합니다 예를 들어 hello.txt 파일을 생성할 때 이 경로가 C:\users\document\hello.txt으로 표시된다면 hello.txt 파일의 절대 경로가 됩니다
이처럼 절대 경로를 알고 있으면 파일 위치를 어디서든 접근할 수 있습니다 그러나 절대 경로가 변경되면 그 위치를 수정해야 하는 단점이 있습니다
요약 : 절대적인 기준인 최초 디렉터리(/)를 기준으로 경유한 경로를 모두 기입하는 방식
상대 경로
현재 파일의 위치를 기준으로 파일의 상대적인 경로를 표현합니다 예를 들어 hello.txt 파일이 ./musa/hello.txt 경로에 존재할 때 절대 경로와 다르게 상대 경로는 ./ 기호를 사용합니다
기호 | 의미 |
/ | 최상위 경로 |
./ | 현재 경로 |
../ | 상위 경로 |
요약 : 특정 경로를 기준으로 다른 경로를 표시하는 방식
절대 경로는 /(루트)가 포함된 경로를 의미하고 상대 경로는 현재 파일 위치를 기준으로 작성된 경로를 의미한다
파일 다운로드 취약점(File Download Vunerability)이란?
파일을 다운로드할 때 발생하는 취약점입니다 이 취약점이 발생하는 원리는 파일명이 포함된 URL의 파라미터를 조작하여 임의의 파일 경로의 접근하면 파일 다운로드가 가능하게 되는 취약점입니다 즉 비상적인 파일을 받는 행위를 의미합니다
파일 다운로드 취약점(File Download Vulnerability) 원리
파일 다운로드 취약점 원리에 대해 자세히 설명하자면 공격자가 파일명이 포함된 경로 값에 ../(상위 경로) 기호를 입력해 파일 경로를 변조합니다 이때 공격자가 변조한 파일 경로로 파일을 다운로드하게 됩니다
공격자가 기존 파일명 경로를 ../../../../../etc/passwd < 이렇게 변조 후 웹 서버에 요청하면 웹 서버는 'download.jsp'라는 애플리케이션에 요청을 전달합니다
download.jsp : 웹 서버의 upload 폴더에 존재하는 파일의 이름을 입력받으면 그 파일을 다운로드해주는 페이지 입니다
이후 ../ (상위 경로) 기호는 기존에 passwd 파일이 저장된 파일 경로 이름과 동일하게 인식되어 download.jsp를 통해 passwd 파일을 다운로드하게 해줍니다 이처럼 파일 다운로드 취약점은 passwd 파일 말고도 웹 서버에 존재하는 모든 파일들을 다운로드할 수 있기 때문에 위험합니다
passwd : 사용자의 정보들이 담긴 파일입니다
파일 다운로드 취약점(File Download Vulnerability) 보안조치
파일 다운로드 취약점은 ../ (상위 경로)와 같은 사용자가 입력한 값에 의해 파일이 호출되기 때문에 사용자 입력 값에 대한 검증이 필요합니다
해당 취약점을 보완하기 위해서는 사용자 입력값에 '/', '../', '\' 와 같은 문자 기호를 공백으로 치환하는 필터링 과정을 추가하거나 파일 다운로드 시 권한을 체크하여 권한이 없으면 파일 다운로드가 불가능하게 설정해 줍니다
Directory Traversal 이란?
Directory Traversal은 디렉터리 접근 공격을 말합니다 앞서 공격자가 URL 파라미터 값에 ../ (상위 경로) 명령어를 이용하여 기존에 디렉터리 경로가 아닌 상위 경로를 강제적으로 접근하는 방식을 의미합니다 즉 디렉터리에 대한 접근 권한을 우회하여 접근하는 공격 방식이라 할 수 있습니다 원리와 보안조치는 위에서 설명한 파일 다운로드 취약점과 동일합니다
[ 참고 자료 ]
절대경로, 상대경로란?
안녕하세요. 프로그래밍을 하다보면, 경로에 관한 것을 처리하곤 합니다. 이때 어떤 API는 절대 경로로 처리를, 또 다른 API는 상대 경로 로 처리를 하곤 합니다.절대 경로 , 상대 경로의 개념이 확
mommoo.tistory.com
파일 경로 - 절대 경로와 상대 경로
파일 경로는 대단히 중요합니다. 모듈이나 미디어 파일을 이용할 때 경로가 잘못된다면 오류가 날 수도 있고, mkdir, cd 등의 리눅스 명령어를 이용할 때도 경로를 잘못 입력하면 원하는 결과와 전
velog.io
3# 파일 다운로드 취약점에 대한 이해
한주간 너무 바빠서 한동안 강의를 올리지 못하고 이제 올리네요 ㅠ이제부터 본격적으로 취약점에 대해 살펴보는 시간을 가지도록 하겠습니다.ㅎㅎ웹의 구조상 원격지의 서버 내 임의의...
cafe.naver.com
파일 다운로드 취약점 (File Download Vulnerability)
* 파일 다운로드 취약점 : 웹 상 파일 다운로드 시, 경로 및 파일명을 파라미터로 받아 처리하는 경우, 적절한 필터링이 없어 경로 및 파일명 조작이 가능할 시, 허용되지 않은 파일을 다운 받을
isc9511.tistory.com
Directory Traversal
Directory Traversal 공격자가 응용 프로그램을 실행 중인 서버에서 임의의 파일을 읽을 수 있도록 허용하는 웹 보안 취약점이다. directory traversal공격을 통하여 애플리케이션 코드 및 데이터, 백앤드
rhenus9911.tistory.com
디렉토리 순회 | Pentest Gym | 버그바운티클럽
디렉토리 순회 (Directory Traversal) 취약점에 대해 학습하고 실습 문제를 통해 기본적인 공격 기법과 안전하지 않은 필터를 우회하는 방법을 알아봅니다.디렉토리 순회
www.bugbountyclub.com
What is directory traversal? | Tutorial & examples | Snyk Learn
Learn how to protect your code from directory traversal in JavaScript by exploiting a vulnerable web server.
learn.snyk.io