728x90

File Upload 공격

설명
악의적인 스크립트 파일을 웹 서버에 업로드하여 접근할 경우 웹 서버 사용자 권한으로 실행이 되는 취약점이다.
 발생원인 업로드할 파일이 안전한지 검사하지 않아 발생한다.

파일이 업로드되는 페이지(게시판, SNS 등)에 악성파일(웹셀)을 업로드가 가능한 경우에 발생한다.
 위험성 환경마다 권한이 다를 수 있지만, 서버를 직접 컨트롤할 수 있어 서비스에 치명적인 영향을 줄 수 있다.
 대응 ㅇ업로드되는 파일의 크기, 개수, 종류를 제한한다.
ㅇ업로드한 파일을 외부에서 접근할 수 없는 경로에 저장한다.
ㅇ업로드한 파일의 저장 경로와 파일명을 외부에서 알 수 없도록 한다.

ㅇ실제 저장되는 파일명은 난수를 이용해 유추 불가능하도록 생성하여

   외부로부터 직접적인 접근 불가능하게 구현한다.

ㅇ업로드한 파일에 대한 웹서버의 실행권한을 제거하고 저장한다.

 

 

PHP File Upload 공격이 가능하려면?
1) php 파일을 서버에 업로드할 수 있어야 한다.
2) 웹 브라우저를 통해서 접근이 가능해야 한다.

 

이를 방지하려면

. 업로드되는 파일의 확장자를 검사하여 허락된 타입만 저장한다.

. File Upload 디렉토리를 Web root 디렉토리를 벗어난 위치에 설정한다.

. 해커가 파일을 찾을 수 없도록 업로드 파일의 이름과 확장자를 난수화하여 저장한다.

. 저장되는 파일은 실행권한이 없도록 권한 변경하여 저장한다.

. 실제 저장되는 파일명과 View로 보여주는 파일명을 다르게 한다.

  DB에 보여줄 파일명과 실제 저장된 파일명을 모두 저장하고, View에는 업로드시의 파일명으로 보여주고

  다운로드를 누르면 실제 파일명을 View 파일명으로 변경하여 저장되도록 구현한다.

. 특수문자가 포함된 경우 업로드를 막는다.

 

728x90

'Web Security' 카테고리의 다른 글

HTML Purifier 사용법 예시  (0) 2023.02.28
remote IP address  (0) 2021.03.24
파일 다운로드 공격 방지  (0) 2019.07.05
Cross-Site Scripting (XSS) 방지  (0) 2019.06.20
SQL Injection 공격 방지  (1) 2019.06.19
블로그 이미지

Link2Me

,