[Web] 파일 업로드 (FU)

파일 업로드

 

취약점 개요

■ 위험도
- 상

■ 점검 목적
- 업로드가 되는 파일의 확장자에 대한 적절성 여부를 검증하는 로직을 통해 공격자가 조작된 Server Side Script 파일 업로드 방지 및 서버 상에 저장된 경로를 유추하여 해당 Server Side Script 파일 실행을 불가능하게 하기 위함

■ 보안 위협
- 해당 취약점 존재 시 공격자가 조작된 Server Side Script 파일을 업로드 하고 실행하여, 쉘 권한 획득 후 홈페이지를 통해 시스템 명령어를 실행하고, 웹 브라우저를 통해 그 결과 값을 보며, 시스템 관리자 권한 획득 또는 인접 서버에 대한 침입을 시도할 수 있음

 

점검 및 조치 방법


■ 점검 및 판단 기준
- 양호 : 업로드 되는 파일에 대한 확장자 검증이 이루어지는 경우
- 취약 : 업로드 되는 파일에 대한 확장자 검증이 이루어지지 않는 경우

■ 조치 방법
- 업로드 되는 파일에 대한 확장자 검증 및 실행 권한 제거

 

 



■ 점검 방법
Step 1) 사용자 게시판의 파일 첨부 기능 존재 유무 확인



Step 2) 첨부 기능이 존재하는 경우, 확장자가 .jsp, .php, .asp, .cgi 등 Server Side Script 프로그램들의 파일들이 업로드 가능한지 확인
※ 클라이언트 프로그램에서 JavaScript, VBScript 등의 스크립트로 파일첨부를 차단하는 경우 차단 기능을 수정하여 파일을 첨부함



Step 3) 홈페이지에 있는 디렉토리 정보를 이용하여 첨부한 Server Side Script 프로그램의 위치를 조사한 후 브라우저 주소 창에서 해당 프로그램의 실행이 가능한지 확인



■ 보안설정방법
※ 사용자가 파일을 업로드 할 수 있는 모든 모듈에 적용 필요
Step 1) 화이트 리스트 방식으로 허용된 확장자만 업로드 허용
Step 2) 업로드 되는 파일을 디렉토리에 저장할 때 파일명과 확장자를 외부 사용자가 추측할 수 없는 문자열로 변경하여 저장(파일 이름은 DB에 저장)
Step 3) 업로드 파일을 위한 전용 디렉토리를 별도로 생성하여 httpd.conf 와 같은 웹 서버 데몬 설정파일에서 실행 설정을 제거함으로써, Server Side Script가 업로드 되더라도 웹 엔진이 실행하지 않는 환경을 설정함
Step 4) 파일 업로드 필드를 대상으로 특수문자 필터링하도록 웹 방화벽 룰셋 적용

유형 별 상세 설정

웹 애플리케이션

 

ASP

Step 1)
수용 가능한 파일의 확장자만 업로드 허용
- 이미지 파일의 경우(JPG, GIF, BMP 등)
- 문서 파일의 경우(XLS, PDF, PPT, DOC 등)
확장자 검증 시 대소문자 구분 없이 문자열 비교



Step 2) MIME TYPE 확인을 통한 실행 파일 업로드 차단
예) MINE TYPE을 통한 악성 파일 업로드 차단


Step 3) 파일 확장자에 특수문자가 포함되지 않도록 검증하는 로직 구현
Step 4) 파일 검증 시 대소문자 구분 없이 문자열 비교

 

ASP.net
Step 1) 수용 가능한 파일의 확장자만 업로드 허용
- 이미지 파일의 경우(JPG, GIF, BMP 등)
- 문서 파일의 경우(XLS, PDF, PPT, DOC 등)
확장자 검증 시 대소문자 구분 없이 문자열 비교
예) doc, hwp, pdf, jpg 파일만 업로드 허용



Step 2) MINE TYPE 확인을 통한 실행 파일 업로드 차단
예) MIME TYPE을 통한 악성 파일 업로드 차단



JSP
Step 1) 수용 가능한 파일의 확장자만 업로드 허용(Positive 방식)
- 이미지 파일의 경우(JPG, GIF, BMP 등)
- 문서 파일의 경우(XLS, PDF, PPT, DOC 등)
예) doc, hwp, pdf, jpg 파일만 업로드 허용
확장자 검증 시 대소문자 구분 없이 문자열 비교



Step 2) MINE TYPE 확인을 통한 실행 파일 업로드 차단
예) MIME TYPE을 통한 악성 파일 업로드 차단



PHP
Step 1) 수용 가능한 파일의 확장자만 업로드 허용(Positive 방식)
- 이미지 파일의 경우(JPG, GIF, BMP 등)
- 문서 파일의 경우(XLS, PDF, PPT, DOC 등)
예) doc, hwp, pdf, jpg 파일만 업로드 허용
확장자 검증 시 대소문자 구분 없이 문자열 비교



Step 2) MINE TYPE 확인을 통한 실행 파일 업로드 차단
예) MIME TYPE을 통한 악성 파일 업로드 차단



웹서버
IIS
설정 > 제어판 > 관리도구 > 인터넷 서비스 관리자(IIS) 선택
해당 업로드 폴더에서 우클릭 > 등록 정보 > 디렉토리 > 실행 권한 "없음" 설정



Apache
Apache 설정 파일인 httpd.conf에 해당 디렉토리에 대한 문서 타입을 컨트롤하기 위해 Directory 섹션의 AllowOverride 지시자에서 FileInfo 또는, "All" 추가



파일 업로드 디렉토리에 .htaccess 파일을 만들고 다음과 같이 AddType 지시자를 이용, 현재 서버에서 운영되는 Server Side Script 확장자를 text/html 로 MIME TYPE을 재조정하여 업로드 된 Server Side Script가 실행되지 않도록 설정 또는, FileMatch 지시자를 이용하여 *.ph, *.inc, *.lib 등의 Server Side Script 파일에 대해서 직접 URL 호출을 금지시킴



※ 주의할 점
Apache 서버의 경우 AllowOverride 지시자 변경 시 Apache restart 필요
파일 업로드 되는 디렉토리 운영에 필요한 Server Side Script 가 존재하는지 확인
파일 다운로드 프로그램이 아닌 직접 URL 호출을 통해 파일을 다운받는 경우 FileMatch 지시자를 사용하면 차단 설정한 확장자의 파일 다운로드는 거부됨

Step 1) 첨부 파일 확장자 필터링 처리로 사용자가 첨부 파일의 업로드 시도 시, 업로드 파일의 확장자 검토하여 적절한 파일인지 검사하는 루틴을 삽입하여, 적합한 파일의 확장자 이외의 파일에 대해서 업로드가 불가능하도록 하며, 이런 필터링 규칙은 서버에서 구현하여야 함
Step 2) 시스템 보안설정 시 웹서버 구동은 반드시 관리자 권한이 아닌 일반 사용자 권한으로 구동함
Step 3) 외부사용자가 첨부 파일을 이용하여 권한을 획득할지라도 최소한의 권한만을 사용할 수 있도록 함
Step 4) 업로드 된 디렉토리에서 실행 권한을 제거하는 방법은 임시적이기는 하지만 소스코드의 수정 없이 간단히 수행될 수 있음

 

웹 방화벽
Step 1) 다운로드 인수 값을 대상으로 특수문자(../ ./ ..\ .\ %) 필터링 규칙 적용

■ 용어 설명 / 팁
※ Server Side Script : 웹에서 사용되는 스크립트 언어 중 서버 사이드에서 실행되는 스크립트

댓글

Designed by JB FACTORY