이번에는 File Upload다 File Inclusion이 include를 이용해서 기존에 웹페이지에 서버에 있는 다른 파일을 포함하는 공격이라고 하면 파일 업로드는 악성코드가 담긴 파일을 서버에 직접 업로드하여 그 파일의 주소로 찾아가 실행시키거나 하는 등의 공격이다.
파일 업로드 공격이후 파일 Inclusion공격도 치명적일 것이라고 생각한다.
그럼 이번에도 low와의 차이점을 보기 위해 같은 형식의 공격을 해보도록 하겠다.
먼저 hackM.php라는 파일을 공격자 측에서 생성한다.
그 파일의 내용은 이러하다.
<?php
system("cd ../../../../../../../ && dir")
?>
간단하게 cd 명령로 로컬디스크 c로 간 후 그 안에 디렉토리들과 간단한 정보들을 보는 명령어인 dir을 실행하는 코드이다.
리눅스에서 ls가 윈도우에서는 dir이라고 보면 된다.
low레벨과 동일하다.
그리고 이 파일을 업로드 해보도록 하자.
이미지 파일밖에 안된다고 한다.
medium레벨에서는 mime type을 검사한다. mime type이 이미지인 파일만을 업로드할 수 있다는 것이다.
그럼 어떻게 우회할 수 있을까 ?
mime-type은 브라우저 단에서만 검증되고 서버 단에서는 검증되지 않는다고 한다.
그렇다는 말은 프록시로 패킷을 가로채서 위조하여 이미지 말고 다른 파일을 업로드할 수 있게 하는 방법이 있다는 것이다.
그럼 직접 해보자.
아래에 Contetn-Type을 보면 php라고 되있는 것을 볼 수 있다.
이제 이것을 아래처럼 image/png로 바꾸게 된다면 서버는 php파일의 mime type을 이미지로 인식하게 된다.
그럼 아래처럼 성공적으로 업로드가 된 것을 볼 수 있다.
직접 그 악성 파일의 주소로 가서 공격자 입장에서 서버의 PC의 중요한 정보들을 볼 수 있었다. (한글 깨짐)