ETC./WEB

파일 다운로드 취약점

마띠(쥔장) 2019. 11. 12. 16:48

파일 다운로드

 

일반적으로 웹 서버에 올라간 파일을 사용자에게 보여주는 방식은 크게 두 가지:

 

1) Dynamic 처리; 파라미터를 통해 사용자 접근을 허용함

bbsDownload.jsp에서 filename이라는 고세서 kaist.hwp를 사용자에게 제공한다.

 

2) Static 처리; 웹 서버의 특정 물리적인 디렉토리를 링크처리해서 사용자에게 뿌려줌

bbsDownload 밑의 kaist.hwp 파일을 사용자에게 뿌려준다.

 

-취약성) Dynamic 처리

 

상위 디렉토리로 계속 올라가서 etc파일 밑에 passwd 파일에 접근할 수 있다.

 

 

(1) 취약한 소스 예제

 

사용자가 파일을 요청하면, $exist 변수에 넣고, 요청한 파일이 있으면 fopen()을 이용하여 읽기모드로 파일을 읽는다. 이렇게 파라미터들을 다이나믹 처리한 부분에 문제가 생긴다.

 

정상: test.php?file=local.html

공격: test.php?file=../../../../../../../../../../etc/passwd

 

 

(2) 해킹 로그 분석

GET 방식을 이용하여 요청을 보냄 --> GET 방식은 사용자 눈에 웹 로그에 그대로 남기 때문에 사용자가 직접 확인할 수 있다.

 

1) 인코딩

2) base64 인코딩

일반적인 ../가 아닌 base64 등을 이용해 인코딩한 경우의 패턴도 가능하다.

 

 

(3) 대책

 

사용자의 상대 경로 입력이 취약점의 주 원인 -> 절대 경로

 

좌부터 ASP, PHP, JSP

1* ../ 등을 악용하여 상위 경로를 탐색할 수 없게 절대 경로를 통해 파일을 추출하고,

2* 하위 경로 탐색은 제거/우회하여 절대 경로로만 인식할 수 있게 한다.

 

728x90

'ETC. > WEB' 카테고리의 다른 글

Nmap Port Scanning with Wireshark  (0) 2021.03.29
파일 업로드 취약점  (0) 2019.11.12
XSS  (0) 2019.11.12