주요정보통신기반 시설 가이드

파일 업로드와 파일 다운로드

만보만보잠만보 2024. 3. 21. 14:02

파일 업로드

개념

공격자가 심은 Server Side Script 파일이 업로드되어 실행되는 취약점입니다.

 

발생 원인

업로드되는 파일의 확장자에 대한 확인 로직 미흡으로 발생합니다.

 

위험한 이유

공격자가 조작된 Server Side Script 파일을 서버에 업로드하여 시스템 관리자 권한 획득이나 인접 서버에 침입, 혹은 정보 탈취등을 시행할 수 있습니다.

 

조치 방법

- 화이트 리스트 방식으로 허용된 확장자만 업로드 가능토록 서버 측 통제를 적용합니다.

- 업로드되는 파일을 디렉터리에 저장할 때 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장합니다.

- 업로드 파일을 위한 전용 디렉터리를 별도로 생성하여 웹 서버 데몬 설정 파일(httpd.conf )에서 실행 설정을 제거함으로써, Server Side Script가 업로드되더라도 웹 엔진이 실행하지 않는 환경을 설정합니다.

파일 업로드 필드를 대상으로 특수문자를 필터링하도록 룰셋을 적용합니다.

 

파일 다운로드

개념

웹 사이트에서 허용된 경로 외 다른 경로에서 파일 다운로드가 발생하는 취약점입니다.

 

발생 원인

웹 사이트에서 허용된 경로 외 다른 경로에서 파일 다운로드가 발생하는 취약점입니다.

 

위험한 이유

공격자는 passwd파일이나 shadow 파일 같은 중요파일들을 다운받을 수 있습니다.

 

조치 방법

- 다운로드 파일이름을 DB에 저장하고 다운로드 수행 시 요청 파일 이름과 비교하여 적절한지 확인하여 사용자가 조작할 수 있는 변수를 제거합니다.

- 다운로드 APP 소스 파일을 수정하여 파일을 다운받을 수 있는 디렉터리를 특정 디렉터리로 한정하고 이 외의 다른 디렉터리에서는 파일을 다운받을 수 없도록 설정합니다.

- PHP를 사용하는 경우 php.ini에서 magic_quotes_gpc On으로 설정하여 ,\./와 같은 역슬러시 문자 입력시 치환되도록 설정합니다.

- 파일 다운로드의 절대 경로 설정 및 DocBase의 상위경로 또는 타 드라이브로 설정을 변경합니다.

- 다운로드 경로 정보를 JSJS 소스에서 확인할 수 없게 제한하며, 웹 서버 서블릿 내부 또는 별도의 설정 파일에서 관리합니다.

- 다운로드를 제공하는 페이지의 유효 세션 체크 로직을 필수로 적용합니다.

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

 

추가 정보

- Magic_quotes_gpc: PHP에서 사용자 입력 데이터를 자동으로 이스케이프 처리하는 기능입니다. 하지만 PHP 5.4버전부터는 비활성화 되어있기 때문에 addslashes() 함수와 같은 다른 이스케이프 처리 함수를 사용하는 것이 좋습니다.

- DocBase: 웹 서버에서 웹 사이트의 루트 경로를 나타내는 변수입니다.