일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Leviathan
- over the wire
- 파일 업로드 취약점
- sql injection
- php 파일 업로드하기
- Cookie
- php
- SQLi
- ssrf
- php login page
- overthewire
- php To Do List
- Reconnaissance
- file upload
- Recon
- THM
- privilege escalation
- BANDiT
- Authentication
- access control
- tryhackme
- php file upload
- Server Side Request Forgery
- active recon
- active reconnaissance
- php 로그인 페이지 만들기
- OS Command Injection
- Cryptography
- War Game
- FTZ
- 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 |