본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(42일차)

by Challenge programmers 2023. 12. 21.

오늘 학습 주제

1. File Upload 취약점

 

 

 

 

File Upload 취약점


- File Upload 취약점 -

파일 업로드 기능이 존재하는 경우

업로드하는 파일의 크기와 개수를 제한하지 않고 

외부에서 직접 접근이 가능한 경로에 파일을 저장하는 경우 발생하는 취약점

 

post는 요청 본문에 들어가는 것으로

길이에 대한 정보와 인코딩에 대한 정보가 필요

 

 

- x-www-form-urlencoded -

서버로 전달하는 값(=요청 파라미터의 값)을 URL 인코딩 방식으로 인코딩해서 전달

ex) name=hong&age=23&email=hong%40test.com

특수문자 @를 인코딩해서 전달

 

텍스트 형태의 데이터 전달을 위해 사용

 

 

- multipart/form-data -

폼 데이터를 여러 부분(parts)으로 나누어 전송하여

일반적인 application/x-www-form-urlencoded 타입의 폼 데이터 전송 방식보다

더 복잡한 데이터 형식을 지원

boundary 사이의 값이 하나의 요청 파라미터

 

가변형태의 데이터를 전달하기 위해 사용

 

 

- 서버 코드에 포함되어 있는 multipart* -

aa

 

 

 

- 제한 없는 업로드 파일의 크기와 개수 -

(1) 업로드되는 동안 서버의 연결을 독점하기 때문에 불필요하게 큰 파일(또는 의미없는 파일)을 업로드하여

서버의 연결 자원을 고갈 시켜 정상적인 서비스 방해 가능

(2) 업로드한 파일은 임시 또는 영구적으로 서버에 저장되므로, 불필요한 파일(또는 의미없는 파일)을 업로드하여

서버 디스크 자원을 고갈시켜 정상적인 서비스 방해 가능

 

 

- 외부에서 직접 접근이 가능한 경로에 저장 -

서버에서 실행 가능한 파일을 업로드 후 직접 호출, 실행하는 것이 가능

 

 

- WebShell 파일을 업로드하고 실행하여 서버의 제어권 탈취 -

WebShell: 서버 사이트 스크립트 언어를 이용하여 하나의 파일로 구성된 프로그램

Command Injection 공격을 효율적으로 할 수 있도록 만들어진 프로그램

 

 

- 예상 피해 -

서버의 연결 및 디스크 자원을 고갈시켜 정상적인 서비스를 방해

서버의 제어권 탈취

서버를 악성코드 유포지로 악용

 

 

- 대응 방안 -

서비스에 맞추어 업로드 파일의 크기와 개수를 제한

업로드 파일을 외부에서 접근할 수 없는 경로에 저장

(Web Root Directory 밖)

업로드 파일을 저장할 때 외부에서 알 수 없는 형식으로 실행 속성을 제거하고 저장

 

 

 

 

 

 

Path Traversal(경로 조작)


-  Path Traversal(경로 조작) -

외부에서 전달된 값이 서버 내부의 파일을 참조하는데 사용되는 경우

외부 입력값 경로를 조작하는 문자열(. .. / \ 등) 포함 여부를 확인하지 않고 사용하여

제한된 경로를ㄹ 벗어나 시스템 파일 등에 접근이 가능해지는 취약점

 

파일이 저장된 경로를 외부에서 알 수 없도록 하기 위해서

외부에서는 파일명만 받고 서버에서 경로를 처리할 경우

경로는 외부로 노출되지 않으나 원래 접근할 수 없는

시스템 경로의 파일을 다운로드할 수 있는 문제가 발생

        

 

-  방어 기법 -

외부 입력값을 서버 내부 파일을 참조하는데 사용하는 경우

외부 입력값에 경로 조작 문자열 포함 여부를 확인하고 사용하거나

사용할 수 있는 값을 미리 정의하고 정의된 범위 내의 값만 사용하도록 제한 > 허용 목록 방식의 제한

 

파일 업로드 기능을 안전하게 구현하면 파일 다운로드 기능 역시 구현해야 하며

파일 다운로드 기능을 구현할 때는 경로 조작 취약점이 발생하지 않도록 조치