본문 바로가기

Security/Hacking & Security

[보안 해킹] 홈페이지 보안 취약점 - 파일 다운로드 취약점

[보안 해킹] 홈페이지 보안 취약점 - 파일 다운로드 취약점

 

 

■ 취약점 설명 및 사례

    ⑴ 취약점 설명

        - 외부 입력 값에 대해 경로 조작에 사용될 수 있는 문자를 필터링 하지 않으면, 예상 밖의 접근 제한 영역에 대한 경로 문자열 구성이 가능해져 시스템 정보누출, 서비스 장애 등을 유발 시킬 수 있는 취약점

 

 

    ⑵ 사례

        ① 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


문의 사항 남기기