(**파일(이미지, 문서 등)을 업로드 할 수 있는 페이지가 있어야 함)
https://github.com/secuacademy/webhacking
위 링크에서 webshell.php
파일을 열고 RAW를 누른 다음, 링크 복사 후 터미널에서 root 디렉토리 아래에서 wget 명령어를 통해 다운로드 해준다.
> wget 링크주소
nano 편집기로 webshell.php 파일을 보면,
'cmd'가 isset일 때 system으로 실행하는 명령
임을 알 수 있다.
File Upload 페이지에 업로드 해준다.
(이때 나는 root 디렉토리에 다운받았던 webshell.php 파일을 home으로 옮겨서 업로드 했다. root 디렉토리는 kali 계정에서 접근불가기 때문)
../../
이 두번 나왔으므로 주소창에서 두단계 위로 가면 된다는 뜻이다.
http://localhost/dvwa/vulnerabilities/upload/#
->>
http://localhost/dvwa/hackable/uploads/webshell.php
따라서 위와 같이 주소를 입력하고 이동하면 command 입력창 페이지가 뜬다.
여기를 통해 시스템 명령어 입력 가능함
다음 코드를 입력해보면 정상적으로 작동이 된다.
> cat /etc/passwd
; jpeg나 png 파일만 업로드 할 수 있다는 문구가 뜸
Content Type
에서 걸러진다는 것을 알 수 있다.따라서 이 타입을 image/jpeg
로 바꿔주고
Forward 클릭하면 다음과 같이 파일 업로드에 성공한다.
따라서, mideum 단계와 같이 Content 를 검사하여도 해킹에 성공할 수 있다.
(1) impossible 단계 : 업로드 된 파일의 확장자가 이미지(JPG,PNG 등)인 것을 확인한 후에, 업로드 된 내용을 바탕으로 이미지 파일을 다시 생성하여 이미지가 아닌 다른 파일들이 업로드 되는 것을 완전하게 차단해줌
(2) 기타 방법 : 업로드 된 파일의 이름을 랜덤하게 바꾸어 해커가 자신이 업로드한 파일에 접근하지 못하도록 함
(3) 기타 방법 : 업로드 되는 서버를 웹 서버와 다르게 구성