File Upload 취약점이란 무엇인가?
웹 애플리케이션에서 파일 업로드 기능을 구현할 때 적절한 검증을 수행하지 않아 발생하는 취약점이다. 공격자가 악성 행위를 할 수 있는 파일을 서버에 업로드하여 시스템 장악이나 정보 탈취를 할 수 있다.
공격 유형
- 웹 셸 업로드
- 웹에서 원격 명령이 가능한 백도어 파일을 업로드한다.
- 파일 확장자 우회
- .php.jpg, .php5, .phtml 등 여러 확장자를 사용하여 필터링을 우회한다.
- MIME Type 변조
- 요청 헤더의 Content-Type을 변조하여 악성 파일을 정상 파일로 위장한다.
- Path Traversal을 통한 임의 위치 업로드
- ../../와 같은 경로 연산자를 사용하여 의도치 않은 디렉터리에 업로드한다.
- 매직 바이트 우회
- 파일 헤더를 정상 파일의 헤더로 변조하여 필터링을 우회한다.
대응 방안
- 파일 확장자 화이트리스트 적용
- MIME Type 검증
- 매직 바이트 검증
- 파일명 및 경로 검증
- 파일 이름을 변경하여 저장
- 파일 크기 제한
- 업로드 디렉터리를 웹 서버 경로에서 분리