본문 바로가기
IT Tech/Application

파일업로드 취약점

by _><- 2015. 10. 19.
반응형

1. 웹쉘 체크하는 로직


1) 확장자 체크
업로드 되는 파일의 확장자 체크는 기본 중의 기본.
모든 확장자를 제한하고 허용하는 일부 확장자만 업로드 되도록 제한

2) mime-type 체크
이미지 파일일 경우는 image/pjpeg, image/gif 이겠지만 웹쉘같은 텍스트 형식일 경우는 txt/html 형식
물론 mime-type 은 간단한 조작(proxy tool을 사용)에 의해 우회 가능

3) 특수문자(;,%00,%zz) 체크
파일명에 특수문자가 있는지 체크


2. 우회기법
1) %00, %zz 는 종단문자로서 파일 서버가 리눅스 시스템일 경우 우회 기법으로 사용
  예를들어 파일명을 shell.jsp%00.gif  로 업로드 하면 확장자 체크는 우회할 수 있고 서버에 저장되어 호출될때 시스템이 %00, 
  %zz 를 종료문자로 인식하여 shell.jsp 로 호출을 했을때 jsp로 실행되는 경우가 있음

2) 윈도우 IIS의 버그로 인해 shell.asp;.jpg로 업로드할 경우 
   jpg로 인식하고 확장자 체크 우회하여 업로드 가능하고 정상적으로 실행 됨
   (세미콜론(;),물음표(?)는 URL에서 URI와 파라메터의 구분자)

3) 웹쉘 실행가능 확장자
 ASP : cer, cdx, asa
 PHP : php3, html, htm
 JSP : war


3. 대응방안


1) 업로드 폴더의 스크립트 실행 권한 제거

 - 실행이 안되면 스크립트가 텍스트 형태로 나타남


2) 화이트리스트 방식 적용

 - 허용된 파일만 실행


3) 파일이름을 난수화하여 저장


4) 확장자를 강제로 변경시켜 저장


5) 파일이름을 Database에 저장

  - 바이너리로 저장


6) 물리적으로 서버 분리

  - 도메인을 분리


참고 : http://egloos.zum.com/totoriver/v/3271053


반응형

'IT Tech > Application' 카테고리의 다른 글

악성코드 분석  (0) 2015.11.03
SROP(SigReturn Oriented Programming)  (0) 2015.10.29
RPC 공격  (0) 2015.10.07
Cloaking 기능  (0) 2015.10.07
[용어] SSL  (0) 2015.10.04