File Upload 취약점

File Upload 취약점이란 무엇인가?


웹 애플리케이션에서 파일 업로드 기능을 구현할 때 적절한 검증을 수행하지 않아 발생하는 취약점이다. 공격자가 악성 행위를 할 수 있는 파일을 서버에 업로드하여 시스템 장악이나 정보 탈취를 할 수 있다.


공격 유형


  • 웹 셸 업로드
    • 웹에서 원격 명령이 가능한 백도어 파일을 업로드한다.
  • 파일 확장자 우회
    • .php.jpg, .php5, .phtml 등 여러 확장자를 사용하여 필터링을 우회한다.
  • MIME Type 변조
    • 요청 헤더의 Content-Type을 변조하여 악성 파일을 정상 파일로 위장한다.
  • Path Traversal을 통한 임의 위치 업로드
    • ../../와 같은 경로 연산자를 사용하여 의도치 않은 디렉터리에 업로드한다.
  • 매직 바이트 우회
    • 파일 헤더를 정상 파일의 헤더로 변조하여 필터링을 우회한다.


대응 방안


  • 파일 확장자 화이트리스트 적용
  • MIME Type 검증
  • 매직 바이트 검증
  • 파일명 및 경로 검증
  • 파일 이름을 변경하여 저장
  • 파일 크기 제한
  • 업로드 디렉터리를 웹 서버 경로에서 분리

Published by