DVWA File upload 실습
개발환경 : DVWA
File upload를 이용해 web shell을 얻는 공격 실습
Low
DVWA Security에서 level Low 설정
메모장을 열어 webshell을 얻는 php 코드 작성 후 webshell.php로 저장
DVWA 파일 선택 후 업로드 클릭
업로드가 됨
URL에 해당 파일 위치 ../../hackable/uploads/webshell.php 입력
Command 변수에 ls 입력후 GET으로 넘기면 shell처럼 동작
Etc/passwd 파일도 얻어지는 것을 확인
Medium
Security Level을 Medium으로 설정
Webshell.php 파일을 업로드하려 하자, jpeg나 png 확장자를 가진 파일만 업로드 가능하다는 문구가 나옴
확장자를 png로 변경 후 업로드하면 업로드가 되나, shell로써 동작하진 않음
BurpSuite를 켜고 패킷을 잡아 Contetnt-Type을 변경해보자
어떻게 해야 할까? 먼저 webshell_medium.php 파일을 올렸을 시,
Content-Type은 application/octet-stream인데 어떻게 변경해야 할까?
Png 그림파일을 올려보자
패킷을 확인해 보면
Test.png 파일 업로드시 Content-type은 image/png이다.
한 눈에 알아보도록 Comparer에 넘겨보자
한눈에 다른 부분이 나온다. Content-Type을 Image/png로 변경해보자
파일업로드가 무사히 완료되고, shell을 얻을 수 있다.
High
Security Level을 high로 변경
Webshell_high.php를 업로드 해보면 당연히 업로드 되지 않는다.
Medium에서 처럼 content-type을 image/png로 변경해서 업로드 시도를 하였으나, 업로드 되지 않았다.
확장자를 png로 변경해 업로드하니 성공적으로 업로드 됨을 확인
업로드 후 command=ls 시도하였으나 당연히 작동하지 않는다.
진짜 이미지 파일을 하나 만들어서, HxD파일을 이용해 16진수데이터를 보고 맨아래에 위와 같이 shell을 얻기 위한 코드를 넣어준다.
DVWA 좌측탭에 File inclusion탭으로 들어가 file:/// URL을 이용해 파일에 접근하도록 한다.
/var/www/html/ 을 기본으로 접근해,
hackable/uploads/
업로드한 이미지 Webshell PNG 파일에 접근해 파일을 불러온 후,
&를 이용해 별개로 cmd 변수를 보내 webshell을 동작시킨다.
잘 동작함을 확인. 성공.