[웹해킹] 파일 업로드 공격

주연쓰·2021년 7월 12일
0

웹해킹

목록 보기
11/23

1. 파일 업로드 공격 이란?

  • '웹쉘' 이라고 하는 악성 파일을 업로드하는 공격 방법
  • 웹쉘 : 웹을 통해 해커가 시스템 명령을 수행

(**파일(이미지, 문서 등)을 업로드 할 수 있는 페이지가 있어야 함)

2. 파일 업로드 공격 실습 {Low}

(1) DVWA Security > DVWA Security Level ; low 로 실습

(2) File Upload > 이미지 파일 업로드 하는 곳에 웹쉘 파일을 업로드 할 것이다.

https://github.com/secuacademy/webhacking
위 링크에서 webshell.php 파일을 열고 RAW를 누른 다음, 링크 복사 후 터미널에서 root 디렉토리 아래에서 wget 명령어를 통해 다운로드 해준다.

> wget 링크주소

nano 편집기로 webshell.php 파일을 보면,
'cmd'가 isset일 때 system으로 실행하는 명령
임을 알 수 있다.

(3) 웹쉘 파일 업로드하기

File Upload 페이지에 업로드 해준다.
(이때 나는 root 디렉토리에 다운받았던 webshell.php 파일을 home으로 옮겨서 업로드 했다. root 디렉토리는 kali 계정에서 접근불가기 때문)

../../ 이 두번 나왔으므로 주소창에서 두단계 위로 가면 된다는 뜻이다.

http://localhost/dvwa/vulnerabilities/upload/#	
->>
http://localhost/dvwa/hackable/uploads/webshell.php

따라서 위와 같이 주소를 입력하고 이동하면 command 입력창 페이지가 뜬다.
여기를 통해 시스템 명령어 입력 가능함

다음 코드를 입력해보면 정상적으로 작동이 된다.

> cat /etc/passwd

3. 파일 업로드 공격 실습 {Mideum}

(1) DVWA Security > DVWA Security Level ; Medium 로 실습

(2) 위 Low 레벨에서 한 것과 같이 실습을 진행하였을 때, 파일 업로드에서 실패하게 된다.

; jpeg나 png 파일만 업로드 할 수 있다는 문구가 뜸

(3) Proxy > Intercept > Intercept on 하고서 업로드 해보면, line28의 Content Type 에서 걸러진다는 것을 알 수 있다.

따라서 이 타입을 image/jpeg 로 바꿔주고

Forward 클릭하면 다음과 같이 파일 업로드에 성공한다.

따라서, mideum 단계와 같이 Content 를 검사하여도 해킹에 성공할 수 있다.

4. 파일 업로드 공격 대응

(1) impossible 단계 : 업로드 된 파일의 확장자가 이미지(JPG,PNG 등)인 것을 확인한 후에, 업로드 된 내용을 바탕으로 이미지 파일을 다시 생성하여 이미지가 아닌 다른 파일들이 업로드 되는 것을 완전하게 차단해줌
(2) 기타 방법 : 업로드 된 파일의 이름을 랜덤하게 바꾸어 해커가 자신이 업로드한 파일에 접근하지 못하도록 함
(3) 기타 방법 : 업로드 되는 서버를 웹 서버와 다르게 구성

profile
( •̀ ω •́ )✧

0개의 댓글