티스토리 뷰
파일 업로드, 다운로드 취약점.
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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- NGINX
- Python
- 베트남
- 다낭
- memcached
- nodejs
- 가정법
- Python Django
- 영문법
- k8s
- mongoDB
- 도덕경
- 해외여행
- PostgreSQL
- ubuntu
- AWS
- 비교구문
- 여행
- Business English
- 비지니스 영어
- it
- 영작
- 조동사
- redis
- 스페인 여행
- 대명사 구문
- JBOSS
- maven
- hadoop
- hdfs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함