프로젝트/DVWA 실습

DVWA 실습 #6-1 - File Upload(low)

하루히즘 2021. 1. 14. 13:00

2021/01/12 - [프로젝트/DVWA 실습] - DVWA 실습 #6 - File Upload

 

DVWA 실습 #6 - File Upload

DVWA의 다섯 번째 실습 대상인 File Upload다. 선택한 파일을 업로드하는 기능을 가진 폼에 필터링이 제대로 구현되어 있지 않아 악성 파일들이 업로드될 수 있으며 이를 이용해 서버 측의 php 엔진에

haruhiism.tistory.com

문제 해결 방법

Low 단계에서는 아무런 필터링도 거치지 않고 "hackable/uploads/" 디렉토리로 업로드된 파일을 동일한 이름과 확장자로 옮기고 있다. 그렇기 때문에 악성 파일을 업로드해도 이를 방어할 수 없다.

업로드된 악성파일(웹쉘)을 다음처럼 참조하면 서버측 엔진으로 웹쉘이 실행되는 것을 볼 수 있다.

이를 방지하기 위해서는 최소한 확장자와 mime-type을 검사해서 올바른 이미지 파일인지 검사하는 루틴이 적용되야 한다. 현재 단계에서는 업로드된 파일을 실제 업로드 폴더로 이동할 때 move_uploaded_file() 함수를 사용하고 있기 때문에 중복된 파일을 업로드해도 아무런 문제가 없으며 이 경우 해당 디렉토리에 업로드된 중요 파일이나 다른 사용자의 파일이 덮어씌워질 수 있다는 문제점이 있다. 이를 해결하기 위해서는 file_exists() 함수를 이용하여 업로드하려는 파일이 이미 존재하는지 확인하거나 아니면 업로드때마다 파일 이름을 다르게 하여 중복되지 않도록 해야 한다.