본문 바로가기
정보보안기사&CISSP관련/Application Security

[Day 45] 파일 업로드 취약점

by minimalist_2022 2020. 9. 24.

파일 업로드 취약점이란?

  • 웹 어플리케이션에서 업로드 파일에 대한 사전 체크를 하지 않을 경우, 허가되지 않은 파일이 웹서버로 업로드 될 수 있는 취약점
  • 웹 어플리케이션에서 업로드하는 파일 타입이나 확장자를 체크하지 않을 경우, 웹쉘(webshell)이 업로드 되어 서버에서 악의적인 명령이 수행되거나, 악성코드 파일이 업로드되어 이를 다운받은 사용자 PC가 침하사고를 당할 수 있음
  • 또는 다량의 아주 큰 파일을 연속적으로 전송하여 서버 부하 유발 

웹쉘(Webshell)

  • 악의적으로 웹 서버에 업로드 및 설치된 후 원격으로 웹 인터페이스를 통해 실행되어 대상 시스템의 정보 유출 및 변조, 시스템 명령 실행, 원격 제어 등을 수행할 수 있는 Server side script를 의미. 
  • JSP, ASP, PHP 등 다양한 언어로 제작됨

파일 업로드 취약점 대응책

  • 업로드 파일에 대한 파일 타입 검증
  • 업로드 파일에 대한 확장자 검증(화이트리스트 정책 활용)
    • FileMatch 지시자(파일에 대한 요청이 들어왔을 때 정규표현식으로 지정한 패턴과의 일치 여부를 판단해줌)를 이용하여 *.ph, *.inc, *.lib 등의 파일에 대한 직접 URL 호출 차단 설정
  • 업로드 파일 전용 디렉토리를 별도로 생성하고, 해당 디렉토리에 있는 서버 사이드 스크립트가 실행되지 않도록 설정하거나, 직접 URL 호출을 차단
    • AddType 지시자를 이용하여 서버서 사이드 스크립트 확장자(.php 등)에 대해 MIME 타입을 text/html로 조정하여 php 스크립트가 아닌 HTML 문서로 처리되도록 함
  • 업로드 파일 개수나 크기(LimitRequestBody 지시자 사용) 제한