R's Hacking Daily Log

File Upload (1) & Lab (1) 본문

Port Swigger/File Upload

File Upload (1) & Lab (1)

hanhxx 2023. 6. 20. 15:56

File upload vulnerabilities

파일 업로드 취약점이란,

파일명, 확장자, 크기, 내용과 같은 것들을 충분하게 검증하지 않고 사용자가 서버  파일 시스템에 파일을 업로드할 수 있는

취약점을 얘기한다. 

 

파일명, 크기, 파일 확장자 등을 제대로 검사하지 않는 경우,  

:) 동일한 이름의 파일을 업로드하여 서버에 있던 중요한 파일 내용을 덮어쓰기

:) 쓸데없이 디스크 공간을 차지하면서 Dos 공격을 수행

:) 이미지를 업로드하는 기능을 활용해 이미지가 아닌 임의의 코드 파일을 업로드

 

또한, server side script 파일을 업로드하게 된다면 원격 코드 실행(RCE) 공격도 가능하며

directory traversal 취약점이 있는 경우에는 예기치 않은 경로에 공격자가 파일을 업로드할  수도 있다.

 

어떤 파일을 업로드하는지, 어떤 형태로 활용하는지에 따라 다양한 공격이 가능해지는 취약점이라 할 수 있다!!

 

 

Lab - Exploitng unrestricted file uploads to deploy a web shell

file upload vulnerability 개념을 이해하기 위해 간단한 Lab을 살펴보도록 하자.

Lab에 들어가 wiener:peter로 로그인을 하면 위와 같은 페이지가 출력된다. 

 

Avatar로 지정할 파일을 업로드하는 form인데 image가 아닌 php 파일을 업로드해볼까 한다.

 

 

 

메모장에 php를 작성하고 .php 확장자로 저장해 주면 업로드할 shell 준비는 끝!

 

 

 

Upload 버튼을 누르니 파일이 제대로 업로드 되었다는 문구가 나온다. 

Back to my  account를 눌러서 다시 계정 페이지로 돌아가보자.

 

 

로그인하고 파일을 업로드 한 후, 다시 my account page로 돌아간 과정의 packet 기록을 살펴보니 

/file/avatarts/webshell.php 경로에 대한 Get request가 눈에 들어온다.

 

 

해당 packet의 reponse를 보면 /home/carlos/secret 파일의 내용으로 유추되는 문자열을 얻을 수 있다.

아마  업로드한 파일이 실행해 php 내용대로 /home/carlos/secret file 내용을 response로 보내준 거 같다. 

 

 

내용을 복사해서 Submit solution으로 제출하면 Lab은 마무리된다. 

 

 

Lab에서 살펴본 바와 같이 원래는 image를 업로드하기 위한 기능으로 php 파일을 업로드할 수 있다는 건 

파일 확장자에 대한 적절한 검사가 이뤄지지 않는다는 의미이다. 

 

파일 내용 또한 누가 작성했는 지도 모르는 데 마냥 실행해서 결과를 전달하는 건 

secret file 내용처럼 중요한 데이터를 공격자에게 노출시키는 계기가 될 수 있다는 뜻이기 때문에

 

file upload라는 말 그대로 단순히 파일을 업로드하는 게 왜 위험하지?라는 의문이 들 수도 있지만

그 활용 정도가 넓고 추가적인 공격 측면이 다양하다는 점을 인지할 필요가 있다!!

 

'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 - Lab (2)  (0) 2023.06.21
Comments