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 |