일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BANDiT
- FTZ
- php To Do List
- file upload
- Leviathan
- active recon
- php
- Server Side Request Forgery
- tryhackme
- War Game
- Reconnaissance
- Authentication
- OS Command Injection
- Cryptography
- 파일 업로드 취약점
- overthewire
- over the wire
- active reconnaissance
- php 로그인 페이지 만들기
- php login page
- SQLi
- THM
- ssrf
- Cookie
- php file upload
- sql injection
- access control
- privilege escalation
- Recon
- php 파일 업로드하기
- Today
- Total
R's Hacking Daily Log
File Upload - Lab (2) 본문
Lab - Web shell upload via Content-type restriction bypass
이번에 Lab에서는 파일을 업로드할 때 서버에서 요구하는 확장자가 만족되어야 하는 상황을 보여준다.
앞선 Lab에 했던 거처럼 php 파일을 사용해서 upload 하면
오직 image\jpeg & image\png인 유형의 파일만을 허용한다는 문구가 나온다.
문구를 자세히 보면 "application/octet-stream은 허용되지 않는다"는 부분에서 힌트를 얻을 수 있다.
파일을 업로드할 때 보낸 packet을 보면 위와 같이 content-disposition header가 작성되는 걸 볼 수 있다.
avatar 파일을 제출한 사람이 누구인지, csrf token과 업로드한 파일 정보를 각각 나타내고 있는데
이때 업로드한 파일인 webshell.php에 대한 부분은 Content-Type header가 부가적으로 작성된 걸 알 수 있다.
Content-type 값을 보니 문구에서 언급된 application/octet-stream이 그대로 적혀있다.
즉, php 파일을 보낸 form은 type이 허용되지 않는다는 의미로 이 값을 변경할 필요가 있어 보인다.
content-type을 허용된다고 알려준 유형으로 조작해서 packet을 보냈더니
성공적으로 파일이 업로드됐다고 한다.
파일이 업로드 되면 서버에서는 자동으로 해당 파일을 해석하면서 php file이 실행되고
그 결과로 /file/avatarts/webshell.php request에 대한 응답을 받을 수 있게 된다.
GET /file/avatarts/webshell.php의 응답을 확인해 보면 /home/carlos/secret file의 내용을 얻을 수 있다!!
이번 Lab에서는 나름대로 파일 확장자를 검사함으로써 파일 업로드를 하는 데에 어느 정도 제한이 있었지만
파일 업로드의 결과를 알려주는 페이지에서 정보를 얻을 수 있다.
"이런 이유로 에러가 발생했다!"고 말해주는 건
어떻게 보면 사용자의 문제 해결을 도와주기 위한 목적이겠지만 반대로
에러를 발생시킨 이유를 활용할 수 있다는 힌트를 주는 행위가 될 수도 있다.
sql injection에서도 ' 를 입력해 에러가 발생하는지 확인하는 이유가
에러가 발생한다는 건 시스템 상에서 어떠한 역할을 한다는 걸 의미하기 때문이다.
따라서 이번 Lab에서는 content-type과 업로드된 파일 확장자가 실제로 동일한 지 적절히 검사하지 않은 부분 때문도 있지만,
에러 문구로 사용자에게 필요 이상의 정보를 알려주었다는 것이 흠이었다 할 수 있다!
'Port Swigger > File Upload' 카테고리의 다른 글
File Upload - Lab (5) (0) | 2023.06.25 |
---|---|
File Upload - Lab (4) (0) | 2023.06.25 |
File Upload - Lab (3) (0) | 2023.06.21 |
File Upload (1) & Lab (1) (0) | 2023.06.20 |