파일 다운로드
일반적으로 웹 서버에 올라간 파일을 사용자에게 보여주는 방식은 크게 두 가지:
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) 대책
사용자의 상대 경로 입력이 취약점의 주 원인 -> 절대 경로
1* ../ 등을 악용하여 상위 경로를 탐색할 수 없게 절대 경로를 통해 파일을 추출하고,
2* 하위 경로 탐색은 제거/우회하여 절대 경로로만 인식할 수 있게 한다.
'ETC. > WEB' 카테고리의 다른 글
Nmap Port Scanning with Wireshark (0) | 2021.03.29 |
---|---|
파일 업로드 취약점 (0) | 2019.11.12 |
XSS (0) | 2019.11.12 |