티스토리 뷰

파일 업로드, 다운로드 취약점.

Upload 취약점

사내 웹 서비스를 운영하다 보면 웹 서버에 File Upload를 이용한 공격이 많이 발생하고 있다. 이러한 공격은 Upload된 악성 script(웹쉘)를 실행하여 실행권한 탈취 및 html 파일을 변조하여 악성 코드 삽입 등의 공격을 하게 된다. 

( HTTP Protocol의 Upload URL을 타고 들어온다. )

[그림1] 파일 업로드 공격

이러한 공격등에 대한 방어를 하기 위해 웹 서버의 설정등의 보완이 필요하다.

(요즘은 Apache, Nginx, lighttpd등 다양한 웹 서버들이 존재하므로 각 서버에 맞게 설정을 해두면 좋다.)

구체적인 대응방안

1. 폴더의 권한 설정

- 해당 Upload폴더의 실행권한을 제거하여 실행 될 수 없도록 한다.

2. 파일명 변경

- 해당 Upload파일의 이름을 Random하게 생성하여 파일을 찾지 못하도록 한다.

3. 파일 확장자 White List 설정

- 기본정책을 모두 Deny로 설정한 뒤 허용 확장자만 추가하여 관리한다.

4. DB에 저장

- DB에 Binary 형태로 저장한다. 



Download 취약점

파일 다운로드 기능이 있는 웹 서비스라면 다운로드 취약점에도 유의하여야 한다. 파일 다운로드 URL을 통한 서버 내 파일경로를 추측하여 요청할 수 있기 때문이다. 

[그림2] 파일 다운로드 공격


예)  file_download.php?file=./image.jpg
위와 같은 file download URL이 있다고 가정해보자. 일단 Linux환경인지 Window환경인지 간단한 방법으로 확인 할 수 있다.
file_download.PHP?file=./image.jpg 대문자로 요청이 가능하다면 Window환경이라 볼 수 있다.  그럼 파일경로 또한 유추가 가능 하게 된다.

file_download.php?file=../../../hosts
file_download.php?file=..%2F..%2F..%2Fhosts

위와 같이 유추하여 시스템 파일 등을 내려 받을 수 있기 때문에 특정 Directory 외에 접근을 차단해야 한다. 

구체적인 대응 방안
1. 특정 디렉토리 접근만 가능하도록 보완
- 파일명 등에 . / 등의 특수한 문자등을 체크하여 다운로드를 제한한다.


이상 서버 보안에 대하여 알아보았다.


.by rocksea

'Developer' 카테고리의 다른 글

ImageMagick 사용법.  (0) 2013.10.18
[PHP] pear 란.  (0) 2013.10.15
[nodejs] multi core cluster 사용하기  (2) 2013.09.11
[jqeury] 자동완성 구현 ( auto-complete )  (2) 2013.09.09
[nginx] 자동 urldecoding문제  (0) 2013.08.22
댓글