반응형
개념정리
파일 다운로드 취약점에 대해 알아보자.
○ 파일다운로드 취약점
파일 다운로드 기능 사용 시,임의의 문자나 주요 파일의 입력을 통해 웹 서버의 홈 디렉터리를 벗어나 임의의 위치에 있는 파일을 열람하거나 다운 가능한 취약점이다. (passwd, 중요파일/백업, 데이터베이스, 소스코드 등)
○ 발생원인
- 파일 다운로드 시 파일의 절대 경로 또는 상대 경로가 노출되는 경우
- 다운로드 모듈이 파일의 경로나 이름을 파라미터로 사용하는 경우
- 파일 경로와 파일명 필터링 미흡하여
../
를 이용해 상위 디렉터리에 접근이 가능한 경우 - 다운로드 경로가 노출되지 않더라도 구조가 단순하여 파라미터 변조를 통해 접근이 허용되지 않은 파일에 접근이 가능할 경우
위와 같은 케이스들에 해당한다면 공격자는 파일 다운로드 취약점으로 서버 내부에 존재하는 파일들에 접근할 수 있다.
만약, 공격자가 얻을 수 있는 파일이 허용되지 않은 중요한 파일이라면 심각한 문제가 될 것이다.
예제를 통해 실습해보자.
문제분석 & 풀이
memo를 업로드하라는 문구가 있다.
[그림]과 같이 메모를 업로드했다.
업로드하면 업로드한 메모에 접속할 수 있도록 하이퍼링크가 생성된다.
접속하면 저장한 메모가 보인다.
이때, url을 보면
read?name=asd
와 같이 name 파라미터를 이용해서 파일명을 지정하고 메모를 가져오는 것을 알 수 있다.
목표가 flag.py
를 읽는 것이므로 검증이없다면, name 파라미터를 조작해서 flag.py
에 접근할 수 있을 것이다.
read?name=../flag.py
위와 같이 이전 경로에 있는 flag.py
를 읽는 payload를 name 파라미터에 입력하고 요청했다.
대응방안
- 파일명과 경로명을 DB에서 관리
- 허용되지않은 파일에 접근할 수 없도록 낮은 권한으로 서비스를 운영
../
와 같은 문자열을 필터링하여 상위디렉토리에 대한 접근을 차단- 서비스가 특정 확장자의 파일만을 다운로드 받는다면 다운로드 파일에 대한 확장자 검증을 수행
- 파일 다운로드 경로를 static하게 설정하여, 다른 디렉토리에 접근하지 못하도록 차단
reference
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=chogar&logNo=80166459389
반응형