R's Hacking Daily Log

File Upload - Lab (5) 본문

Port Swigger/File Upload

File Upload - Lab (5)

hanhxx 2023. 6. 25. 13:37

Lab - Remote code execution via polyglot web shell upload

이번 Lab에서는 업로드된 파일 내용을 검사한다고 한다. 

그중에서도 file signature 값을 확인하여 업로드된 유형을 확인한다고 하는 데 

 

 

** file signature이란, 

파일 header or footer 부분에 명시되는 값으로 파일 확장자가 무엇이냐에 따라 값이 다른 걸 확인할 수 있다.

 

 

Lab에 들어가 webshell.php file을 업로드해봤더니 

유효한 파일이 아니라는 문구와 함께 업로드 에러가 발생했다고 한다.

아무래도 php file 그 자체로 업로드하면 안 되는 거 같다. 

 

 

이미지 파일으 업로드해야 승인되기 때문에 이미지 파일의 signature을 활용하여 파일을 만들면 어떻게 될까?

<?php echo file_get_contents('/home/carlos/secret'); ?>

원본 php file 내용은 위와 같다. 여기에 GIF89a 라는 GIF signature을 붙여 파일을 재업로드 해보자!

 

 

[수정된 webshell.php]

GIF89a <?php echo file_get_contents('/home/carlos/secret'); ?>

 

 

수정한 php file을 업로드하면 서버에서는 GIF89a 값을 보고 이 파일을 업로드해준다.

이후에 /files/avatar/webshell.php가 실행되면 response로 위와 같은 결과를 얻을 수 있다.

GIF89a는 signature로 작성된 값이고 그 뒤에 있는 수상한 문자열이 /home/carlos/secret file의 내용되시겠다!

 

 

 

이번 Lab에서 살펴본 거와 같이 작성된 파일의 타입을 signature로 판단하는 경우,

사실은 php file이지만 유효한 파일 유형의 signature을 사용해 파일 업로드 제한을 우회할 수 있다는 걸

직접 확인해 볼 수 있었다!!

'Port Swigger > File Upload' 카테고리의 다른 글

File Upload - Lab (4)  (0) 2023.06.25
File Upload - Lab (3)  (0) 2023.06.21
File Upload - Lab (2)  (0) 2023.06.21
File Upload (1) & Lab (1)  (0) 2023.06.20
Comments