일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Cryptography
- sql injection
- BANDiT
- 파일 업로드 취약점
- php
- Server Side Request Forgery
- Recon
- Authentication
- overthewire
- php To Do List
- php file upload
- active reconnaissance
- OS Command Injection
- Leviathan
- over the wire
- SQLi
- file upload
- access control
- tryhackme
- THM
- privilege escalation
- php 로그인 페이지 만들기
- FTZ
- php login page
- Cookie
- php 파일 업로드하기
- War Game
- Reconnaissance
- ssrf
- active recon
- Today
- Total
R's Hacking Daily Log
File Upload - Lab (5) 본문
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 |