웹 개발

파일 업로드 취약점 (webshell upload)

노루아부지 2020. 1. 30. 09:55

파일 업로드 취약점이란?

 

DBD(Drive-By-Download) 공격을 이용해 공격이 이루어지면 일반 클라이언트는 어떠한 액션을 추ㅢ하지 않아도 취약한 사이트를 방문하는 것 만으로도 감염시킬 수 있습니다.

즉, 파일 업로드 기능을 이용하여 시스템 명령어를 실행할 수 있는 웹 프로그램(webshell)을 업로드할 수 있는 취약점입니다.

 

 

공격 시나리오

  1. 파일 업로드 취약점이 존재하는 페이지를 통해 webshell 파일을 업로드 합니다.
  2. http://서버주소/webshell.php 등의 주소를 통해 업로드한 webshell 파일을 호출합니다.
  3. 업로드 한 webshell을 이용하여 시스템 명령을 전송합니다. ex) rm -r *

 

대응방안

  1. 파일 이름은 전체 검사를 원칙으로 한다.
  2. 확장자를 분리할 경우 마지막 확장자를 검사한다.
  3. 허용하는 확장자를 먼저 규정 한 후, 이외의 확장자는 모두 차단한다.
  4. upload된 파일은 upload 전용 폴더에 저장하고, 저장 시 파일명, 확장자명을 변경한다. (다운로드 시 원래 파일명으로 변경)
  5. upload전용 폴더의 실행권한을 제거한다.

 

우회기법

1. urlencode 이용 : %00

→ %00의 뒷 문자열은 웹 서버에서 파일을 저장할 때 null로 인식되는 것을 악용하는 방식

ex) webshell.asp%00.jpg

위 예제의 경우 웹 서버에 저장되는 파일은 webshell.asp 입니다.

 

 

728x90

'웹 개발' 카테고리의 다른 글

JAVA 한글 깨질 경우 인코딩 확인하기  (0) 2020.01.31
[java] 파일 확장자 구하기  (0) 2020.01.30
[java] https connection  (0) 2019.12.30
java file transfer  (0) 2019.12.27
REST API 호출 예제  (0) 2019.12.23
loading