[취약점] 파일 다운로드

2024. 3. 25. 12:19정보 보안/취약점

 

정의

 

  웹 사이트에서 파일 다운로드 시 허용된 경로 외 다른 경로의 파일에 접근할 수 있는 취약점을 의미한다.

 

 

공격 시나리오

 

  공격자는 파일 다운로드 시 애플리케이션의 파라미터 값을 조작하여 웹 사이트의 중요한 파일 또는 웹 서버 루트에 있는 중요한 설정 파일을 다운로드할 수 있으며 이는 곧 2차 피해로 이어질 수 있다.

 

 

대응 방안

 

  • 다운로드 시 허용된 경로 이외의 디렉터리와 파일에 접근할 수 없도록 구현

 

 

판단 기준

 

주요정보통신기반시설

  • 양호 : 다운로드 파일이 저장된 디렉터리 이외에 접근이 불가능한 경우
  • 취약 : 다운로드 파일이 저장된 디렉터리 이외에 접근이 가능한 경우

 

 

점검 예시

 

주요정보통신기반시설

  • 웹 사이트에 cgi, jsp, asp, php 등의 애플리케이션을 이용하여 파일을 다운로드하는 웹 페이지가 있는지 조사
  • 웹 사이트에서 파일 다운로드 시 요청 정보에 파일 경로를 웹 서버 중요 파일의 상대 경로로 치환한 후 전송했을 때 해당 경로 파일들을 다운로드 가능한지 확인
  • 위 내용에 따라서 수행했으나 파일 다운로드가 불가능한 경우 변조한 파일 경로를 아래의 인코딩을 적용하여 재전송 후 다운로드 가능하지 재차 확인
※ URL 인코딩: . (%2e), / (%2f), \ (%5c)
※ 16bit 유니코드 인코딩: . (%u002e), / (%u2215), \ (%u2216)
※ 더블URL 인코딩: . (%252e), / (%252f), \ (%255c)
※ 경로 치환: …//, ….\\, ….\/, …./\
※ 종단 문자 추가: [파일명]%00.jpg, [파일명]%0a.jpg

 

전자금융기반시설

  • 파일 다운로드 시 파일이 저장된 디렉터리 이외에 경로에 접근하여 주요 파일의 다운로드 가능 여부 점검

 

 

구체적 보안 설정 방법

 

1. 파일 다운로드의 취약성은 주로 파일의 이름을 조작하는 데서 비롯되므로 다운로드 파일 이름을 DB에 저장하고 다운로드 수행 시 요청 파일 이름과 비교하여 적절한지 확인하여 사용자가 조작할 수 있는 변수를 제거한다.

 

2. 다운로드 애플리케이션 소스 파일을 수정하여 파일을 다운로드할 수 있는 디렉터리를 특정 디렉터리로 한정하고 이 외의 다른 디렉터리에서는 파일을 다운받을 수 없도록 설정해야 한다.

 

3. 애플리케이션으로 php를 사용하는 경우 php.ini에서 magic_quotes_gpc를 On으로 설정하여 .|./ 와 같은 역슬러시 문자 입력 시 치환되도록 설정한다.

 

4. 파일 다운로드의 절대 경로 설정 및 DocBase의 상위경로 또는 타 드라이브로 설정을 변경하도록 한다.

 

5. 다운로드 경로 정보를 Javascript나 js 소스에서 확인할 수 없게 제한하고 웹 서버 서블릿 내부 또는 별도의 설정 파일에서 관리하도록 한다.

 

6. 다운로드를 제공하는 페이지의 유효한 세션인지에 대한 체크 로직을 필수로 적용하도록 한다.

 

7. 다운로드 시 사용되는 파라미터 값 대상으로 아래의 특수 문자를 필터링하도록 웹 방화벽 룰셋을 적용한다.

문자 설명
. Path Traversal 가능성 확인
/ 특정 Path의 접근 가능성 확인
| 운영환경에 따른 Path 접근 확인
% UTF 인코딩 파라미터

 

'정보 보안 > 취약점' 카테고리의 다른 글

[취약점] 쿠키 변조  (0) 2024.03.25
[취약점] 데이터 평문 전송  (0) 2024.03.25
[취약점] 파일 업로드  (0) 2024.03.24
[취약점] 프로세스 검증 누락  (0) 2024.03.24
[취약점] 자동화 공격  (0) 2024.03.24