Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
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
Archives
Today
Total
관리 메뉴

보안유망주의 t스to리

파일 업로드 취약점(File Upload Vulnerability) 본문

하루하루 배운거 올리기

파일 업로드 취약점(File Upload Vulnerability)

김명현 2024. 11. 9. 01:14

파일업로드 취약점이란?

사용자가 파일을 업로드 할때

파일이름을 사용자가 임의로 정할수있을 때 발생 한다. 

아래 사진을 예시로 들겠다.

정상적인 파일 업로드 상황이다

악의적인 사용자가 상위 디렉터리로 가려는 의도를 가지고 파일이름을 ../같은 메타 문자를 사용하면 

이런식으로 의도되지 않은 상위폴더로 이동해서 악의적인 사용자가 그쪽 파일을 뒤져볼수있다!!

라는 것입니다.

이렇게 파일 업로드 취약점은 사용자가 파일을 업로드할 때, 제대로 검사하지 않아서 발생하는 취약점을 말합니다.

 

악성파일 업로드 취약점

웹사이트의 파일 업로드 기능을 악용하여 악성 코드를 서버에 업로드하고 실행할 수 있는 보안 취약점을 말합니다.

서버 사이드 스크립트 파일

.php, .jsp, .asp같은 확장자 파일들을 우리는 서버 사이드 스크립트 파일이라 하는데요??



웹서버는 이걸 CGI로 실행하고 그걸 사용자에게 보여줍니다.

예를 들자면 

php파일안에 

<?php system("ls ../../../../"); ?>

이런 악성코드가 숨겨져있습니다

이걸 올리고 사용자가 파일을 불러오기만하면 

웹서버는 이걸 실행하면서 서버안에있는 파일이란 파일은 다보이게 할수있는 것이지요.

 

CGI(Common Gateway Interface)란? 

CGI는 웹 서버와 외부 프로그램 간의 통신을 가능하게 하는 인터페이스 프로토콜입니다.

주로 동적 콘텐츠 처리를 위해 웹 서버가 PHP, Python 등의 외부 프로그램과 연동할 때 사용됩니다.

 

악성 웹 리소스

웹 브라우저는 파일 확장자나 서버가 보내는 Content-Type을 보고 파일을 어떻게 처리할지 결정하는데.

예를 들어, .html 파일이나 text/html로 설정된 응답은 HTML로 해석해서 화면에 보여주고, .png나 .jpg 같은 이미지 파일은 이미지로 보여주는 식입니다.

이런 방식은 웹에서 여러 종류의 파일을 잘 보여주는 데 좋지만, 나쁜 의도를 가진 사람들이 이걸 악용할 수도 있습니다. 예를 들어, 누군가가 exploit.html이라는 악성 파일을 서버에 올리면 어떻게 될까요?

이 파일이 https://kim080120/uploads/exploit.html 같은 주소에 있다고 칩시다. 사용자가 이 주소로 들어가면 브라우저는 그냥 HTML 파일이라고 생각하고 열어버립니다. 근데 만약 이 파일에 나쁜 스크립트가 들어있다면?

브라우저는 그 스크립트도 그냥 실행해버리니까 XSS 공격이 일어날 수 있는 거지요. 이런 식으로 파일 업로드를 악용하면 웹사이트의 보안에 구멍이 생길 수 있어서 조심해야 해야합니다.

 

마지막으로 파일 다운로드 취약점에 대해 알아봅시다.

파일 다운로드 취약점 (File Download Vulnerability)

파일 다운로드 취약점은 사용자가 다운로드할 파일의 이름을 임의로 정할 수 있을 때 발생합니다.

파일 다운로드 취약점은 맨위에서 본 파일 업로드 취약점과 비슷합니다.

그저 업로드가 아닌 다운로드로 바뀐거라 생각하면됩니다.

비슷하게 https://kim080120/Downloads/ ?filename= 가 있다고 합시다. 

https://kim080120/Downloads/?filename=flag.txt

https://kim080120/Downloads/?filename=../../../../../../

이런식으로 사용자가 특정디렉터리만 허용하지않으면 다른디렉터리에 있는 파일도 다운받을 수 있는 상황이 나옵니다.