본문 바로가기

웹해킹

웹해킹 #9 파일 업로드 공격

- 파일 업로드 기능을 이용하여 웹쉘이라고 하는 악성 파일 업로드하고 시스템 명령을 실행하는 공격

 

1. 파일 업로드 공격 개요

- 파일 업로드하는 기능에 보안 대책이 적용되어 있지 않을 때 발생

 

* 웹쉘 : 웹을 통해 시스템 명령어를 실행할 수 있는 웹 페이지의 일종

2. 파일 업로드 공격 실습

- 이미지 파일 대신 webshell.php 업로드

- 업로드가 성공했으며, ../../hackable/uploads/webshell.php 라는 경로를 통해 파일이 http://192.168.56.102/dvwa/hackable/uploads/webshell.php에 업로드 된 것 확인 가능
(URL
경로가 /dvwa/vulnerabilities/upload/ 이므로 ../ 두 번 사용시 http://192.168.56.102/dvwa)

- 웹쉘 파일 실행을 위해 업로드 된 경로로 접속

- 웹쉘에 접근 성공하며 명령어를 입력받을 수 있는 폼 필드가 표시됨

- 폼의 입력값에 ‘cat /etc/passwd’를 입력하여 시스템 명령을 실행한다

3. 파일 업로드 공격 대응

- 꼭 필요한 파일 형식만 업로드되도록 파일의 확장자와 내용 검사 : 파일의 확장자만 검사하면, 파일의 실제 내용을 확장자와 다르게 전송함으로써 우회할 수 있으니 파일의 내용까지 일부 검사하여 파일의 종류를 확실하게 검사!
-
업로드된 파일을 사용자가 접근 불가능한 경로에 저장 : 파일 업로드를 위한 별도의 서버를 구축하고 웹 어플리케이션을 서비스하는 서버와 완전히 분리
-
파일이 업로드되는 디렉터리의 실행 권한을 제거
-
업로드된 파일을 다른 확장자로 변경 : php 파일의 경우 php 확장자를 제거나하거나 변경하여 저장하면 경로에 접속하더라도 php 코드 실행 불가능
-
업로드된 파일의 이름을 랜덤하게 재생성하여 저장 : 공격자가 자신이 업로드한 파일의 경로를 추측하지 못하도록!