File Upload Vulnerability [2]

DATE : 2023/9/16

File Upload Vulnerability - Labs

파일 업로드 취약점은 공격자가 서버에 악의적인 파일을 올릴 수 있는 취약점으로

서버에서 적절한 검증 절차를 거치지 않을 때, 더 쉽게 악용할 수 있는 취약점이다.

파일을 업로드 할 때

(1) 서버에 업로드할 수 있는 확장자를 제한

(2) 파일 내용 확인

(3) 파일 크기와 실제 내용 크기 일치 여부 확인

(4) 파일 확장자와 파일 타입 일치 여부 확인

등등 파일과 관련된 정보를 적절히 검사하는 과정을 거친다면

어느 정도 파일 업로드 공격을 예방할 수 있을 것이다.

만약 파일 업로드와 관련된 그 어떤 검증 절차도 구현되지 않는 다면

어떤 상황이 발생할 수 있는 지 간단한 Lab을 통해 알아보자!


[ ]

사용자가 업로드한 Image로 프로필 사진을 설정하는 기능이 있는 서버에

wiener:peter 계정으로 로그인하면

이미지 파일을 선택할 수 있는 form을 볼 수 있다.

여기서 이번 LAB의 목표인 파일을 읽는 web shell을 만들어

<?php echo file_get_contents('/home/carlos/secret'); ?>

Upload 버튼을 누르면 사용자가 선택한 파일이 어디로 올라 갔는지

경로를 ("avatars/webshell.php") 알 수 있고

LAB 페이지에 찾아낸 flag를 제출하면

LAB을 성공적으로 마무리할 수 있다. 👏👏👏


위에서 본 LAB처럼 파일 업로드에 대한 그 어떤 예방 조치도

공격자가 악의적인 파일을 실행하기 쉬워지기 때문에

서버에서 정보를 탈취하는 등 원하는 동작을 실행시킬 수 있

따라서 image 파일만 업로드할 의도로 구성한 form에서는

image type의 파일만 올릴 수 있도록 확장자를 확인하는 등의 검증 과정을 거치는 것이 좋다! 😄

Last updated