수업

12/21

진태현 2023. 12. 21. 14:32

외부 접근 가능 경로에 저장되는 경우 발생할 수 있는 문제점

- 외부에서 호출 실행 할 수 잇는 문제점 

> 외부에서 접근하지 못하는 파일(URL 상의 리소스)에 저장되도록 

 

webshell 파일을 업로드, 실행해서 해당 서버 제어권 탈취

- 예상피해 : 정상적인 서비스를 방해, 해당 서버가 악성코드 유포지로 악용, 서버의 제어권 탈취당하게 됨 

- 업로드 파일 크기와 개수를 제한

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

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

 


게시판에 파일 업로드 취약점이 존재하는지 확인

- 외부 접근 가능 경로에 파일 경로 그대로 저장하고 있음

*파일의 종류를 제한하는지 확인  > 서버 사이드에서 실행 가능한 파일 업로드 

> 이렇게 나오는 이유: 업로드한 파일이 이미지가 아니여서 출력되지 않음. 

 

> 해당 업로드 된 파일 주소로 접속 시 명령어 실행 가능 

 

- 위 처럼 id값이 들어가야 함 

 

Path traversal

- 다운로드 기능을 잘못 구현 

- 이미지 다운로드 경로 브라우저를 통해서 해당 서버의 파일 요청 가능 

>외부 입력값에 경로를 조작하는 문자열(. .. / \ 등) 확인해야 함 

 

대표적 경로 조작 코드 

String savedFileName = request.getParameter("file");

String filePath = "c:/upload/files/" + savedFileName;

File file = new File(filePath);

 

대응 방안

- 외부 입력값을 서버 내부 파일을 참조하는 경우에 조작 문자열 포함 여부를 확인 사용,

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

 

파일 업로드 기능을 안전하게 

> 파일 다운로드 기능을 구현, 파일 다운로드 구현 시에 경로 조작 취약점 (문자열 여부 확인) 발생하지 않도록 해야 함