ice rabbit programming

[보안] 파일 업로드/다운로드 취약점 본문

Development/Secutiry

[보안] 파일 업로드/다운로드 취약점

판교토끼 2021. 1. 17. 23:48

파일을 HTTP로 주고받을 때에는 multipart/form-data의 폼으로 전송하게 되는데, request의 바디는 여러 파트로 나누어져 파라미터와 파일의 내용을 전달하게 된다. 아무래도 업로드가 파일이 서버에 저장되는 것이니 더 주의할 부분이 많다. 정보를 유출하거나 공격하는 파일을 만들어 외부에서 실행하는 것이 파일 업로드 시의 대표적인 공격이다.

 

파일 업로드 시 주의할 점

  • 사이즈(개수/크기) 제한을 두어야 한다.
    -> 사이즈 제한을 두지 않으면 대용량의 파일을 올려 DoS 공격을 취할 수 있다.

  • 타입 체크를 실시하여야 한다. 이에 더해 파일의 실행 권한을 부여하지 않는다.
    -> 웹쉘을 올려 외부에서 실행하여 공격할 수 있다.

  • 외부에서 실행 뿐만 아니라 아예 접근이 불가능하도록, 외부에서 접근이 불가능한 경로에 저장한다.

  • 업로드 파일명과 저장 파일명은 동일하게 저장한다.
    -> 다만 실제 저장은 랜덤하게 하고, DB에 파일명을 저장한다.

 

파일 다운로드 시 주의할 점

  • 컨트롤러를 구분하여 유효성 체크 후 접근해야 한다.
    -> 파일명 경로를 조작하여 다른 파일에 접근할 수 있으므로 파일명 필터링과 권한 체크가 필수이다.

'Development > Secutiry' 카테고리의 다른 글

[보안] 접근제어  (0) 2021.12.19
[보안] 계정 및 인증 관리  (0) 2021.10.05
[보안] 쿠키 및 세션 관리  (0) 2021.03.24
[보안] XSS(사이트 간 스크립팅)  (0) 2020.05.01
[보안] 인젝션  (0) 2020.04.19