[보안 해킹] 홈페이지 보안 취약점 - 파일 다운로드 취약점
■ 취약점 설명 및 사례
⑴ 취약점 설명
- 외부 입력 값에 대해 경로 조작에 사용될 수 있는 문자를 필터링 하지 않으면, 예상 밖의 접근 제한 영역에 대한 경로 문자열 구성이 가능해져 시스템 정보누출, 서비스 장애 등을 유발 시킬 수 있는 취약점
⑵ 사례
① OO대학의 경우 홈페이지 다운로드 기능을 통해 시스템 파일의 다운로드가 가능
- 공지사항 게시판에서 첨부파일 다운로드 받을 때의 URL을 파악
- 파일 다운로드 기능 실행
- 서버의 계정 파일이 다운로드 됨
② OO대학의 경우 홈페이지 다운로드 기능을 통해 시스템 파일의 다운로드가 가능
- 게시물 첨부파일의 속성으로 파일 다운로드 시의 경로를 파악
- 웹 어플리케이션 파일을 다운 받기 위해 경로 값 변경
- 웹 어플리케이션 파일 다운로드 가능
■ 점검방법
⑴ 파일 다운로드 링크 확인
① 마우스를 다운로드 할 파일 링크에 가져간 후 마우스 오른쪽 클릭
- [바로가기 복가(T)] 웹 브라우저 주소입력란에 "붙여넣기"를 하여 링크가 가리키는 URL을 확인
⑵ 파일 다운로드가 가능할 경우 다운로드 파일의 URL을 확인하여 다운로드 방식을 확인
① 파일 다운로드 방식 확인
- 파일 다운로드는 동적 방식과 정적 방식으로 나눌 수 있음
- 동적 방식은 URL 파라미터에 파일이름 혹은 파일번호를 할당하여 데이터를 처리하는 방식
- 정적 방식은 특정 디렉토리에 존재하는 파일에 직접 링크를 설정하여 사용자에게 제공하는 방식으로 아래와 같은 형태임
[동적 방식의 URL 예] ◆ http://점검대상/bbs/Download.jsp?bbs=notice&no=11&filename=계약서.hwp&path=download ◆ http://점검대상/bbs/Download.jsp?bbs=notice&no=11&filename=/download/계약서.hwp ◆ http://점검대상/bbs/Download.asp?fn=c:\download\계약서.hwp
[정적 방식의 URL 예] ◆ http://점검대상/bbs/Download/계약서.hwp |
- 정적 다운로드 방식은 첨부파일의 존재 위치와 파일의 이름을 공격자가 쉽게 획득할 수 있으므로 "파일 업로드" 공격 시 업로드 될 파일의 위치를 추정하는 등 웹서버의 내부 정보 수집에 활용될 수 있으므로 되도록 정적 방식을 지양
(단, 정적 방식은 다운로드 취약점을 이용한 임의의 파일 다운로드가 불가능하여, 대부분의 경우 다운로드 취약점이 존재하지 않음)
② 동적 파일 다운로드 방식의 경우 파일명을 나타내는 변수와 파일의 위치를 나타내는 변수를 아래와 같이 수정하여 시스템 내부 파일의 다운로드를 시도
◆ http://점검대상/bbs/Download.jsp?bbs=notice&no=11&filename=계약서.hwp&path=/download
◆ http://점검대상/bbs/Download.jsp?bbs=notice&no=11&filename=passwd&path=../../../etc/
◆ http://점검대상/bbs/Download.jsp?bbs=notice&no=11&filename=boot.ini&path=../../../
※ ../ 는 상위 경로를 나타내며 최상위 경로(/)로 이동하기 위해 사용되며 최상위 폴더까지의 접근을 하기위해 ../ 문자열을 충분히 입력함
■ 대응 방안
⑴ 홈페이지 개발 보안 조치
① 홈페이지 상에 다운로드 파일의 이름을 데이터베이스에 저장하고 다운로드 수행 시 요청파일의 이름이 동일한지 여부를 검증토록 조치
② 홈페이지 상에 다운로드 파일명 또는 경로에 "..", "/", "\" 값이 입력되지 않도록 조치
③ PHP 언어로 개발된 서버의 경우 php.ini 내용 중 magic_quotes_gpc 항목의 값을 On으로 설정하여 ".\ 와./" 값 입력 시 치환되도록 설정
※ 앞으로 기재될 홈페이지 개발 보안 방안 - 파일 다운로드를 참조, 소스코드를 수정하여 보안취약점을 조치하시길 바람
※ 문의 사항은 메일 : jyuhm@sntkor.com 이나 070-8611-4853
'Security > Hacking & Security' 카테고리의 다른 글
[보안 해킹] 홈페이지 보안 취약점 - 소스코드 내 중요정보 노출 취약점 (0) | 2016.10.13 |
---|---|
[보안 해킹] 홈페이지 보안 취약점 - 파일 업로드 취약점 (0) | 2016.10.12 |
[보안 해킹] 홈페이지 보안 취약점 - 전송 시 주요정보 노출 취약점 (0) | 2016.10.11 |
[보안 해킹] 홈페이지 보안 취약점 - 실명인증 취약점 (0) | 2016.10.10 |
[보안 해킹] 홈페이지 보안 취약점 - 계정관리 취약점 (0) | 2016.10.08 |