본문 바로가기

Security/Hacking & Security

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

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

 

 

취약점 설명 및 사례

    ⑴ 취약점 설명

        - 서버 측에서 실행될 수 있는 스크립트(asp, jsp, php 파일 등)이 업로드 가능하고, 이 파일을 공격자가 웹을 통해 직접 실행시킬 수 있는 경우 내부명령어를 실행하거나 외부와 연결하여 시스템을 제어할 수 있는 취약점

 

 

    ⑵ 사례

        ① OO기관의 홈페이지 게시판에 jsp 파일의 확장자를 변경 후 삽입시도

        ※ jsp, gif, bmp 확장자만 허용됨

 

 

          - 파일 삽입 요청 시 확장자 변경(.jpg) 후 서버 전송

 

 

          - 삽입한 이미지 경로 확인

 

 

          - 업로드된 URL 요청 시 정상동작 확인

 

 

        ② OO대학의 홈페이지 게시판에 html 파일 업로드 시도

 

 

          - 파일 업로드 후 속성에서 파일 다운로드 시의 URL 파악

 

 

          - 특정 파라메터 값에 부적절한 값을 입력하면 업로드 파일의 경로를 알 수 있음

          ※ file_name 혹은 board_id 파라메터 값에 부적절한 값 입력

 

 

          - URL을 수정하여 요청(Request) 하면 업로드한 웹 파일이 실행됨

          ※ html 파일에 스크립트 코드등을 삽입하여 업로드 하면 해당 사이트는 악성코드 유포지 혹은 경유지로 사용되는 등 다양하게 활용 가능

 

 

■ 점검 방법

    ⑴ 파일 다운로드 링크 확인

        ① 파일 업로드(첨부)가 가능한 게시판 등에 서버 사이드 스크립트(ASP, PHP, PHP3, JSP, CGI 등) 및 html 등의 파일을 업로드

 

        ※ 운영 중인 서버의 개발언어에 맞는 서버 사이드 스크립트를 업로드 함

 

        ② 서버 사이드 스크립트가 업로드 되었을 경우 "파일 업로드 취약점"의 존재를 추정할 수 있어 보다 상세한 분석이 필요함. 업로드가 되었을 경우 해당 파일이 웹서버에서 실행되는지 점검

 

 

        ③ 업로드 시도 시 다음 그림과 같이 업로드 실패 화면 또는 오류 메시지가 나타날 경우

 

        ※ 단, 업로드 차단기능이 javascript로 구현되어 있는지 점검이 필요함

 

 

■ 대응 방안

    ⑴ 웹 서버 내에서의 조치

        ① 웹 서버 설정을 변경하여 업로드 된 해당 파일의 실행권한을 차단

           ▶ IIS 웹서버 설정 방법

 

  [제어판] -> [관리도구] -> [인터넷 서비스 관리자] -> 업로드 폴더 선택 -> [속성] 클릭

  -> 마우스 오른쪽 버튼 클릭 -> [등록정보 ] -> [실행권한] -> [없음] 선택

 

 

           ▶ Apache 웹서버 설정 방법

               - httpd.conf 파일에 다음과 같은 지시자를 추가한 후 apache 데몬을 재시작하여 해당 파일의 실행을 차단

 

  PHP 언어로 개발한 사이트의 차단 예)

  <Directory "업로드를 금지할 금지할 디렉토리">

  AddType application/x-httpd-php3-source .php3 .php .phps .ph .cgi .jsp .inc .htm .html shtml

  Options IncludesNoExec

  </Directory> 

 

        ② 웹 서버에는 업로드 대상 파일의 확장자를 검증하는 처리 프로그램을 통해 서버 사이드 스크립트(ASP, PHP, JSP, CGI 등) 파일의 업로드 차단

        ③ 웹 서버에서는 우회 기법을 통한 악의적 파일 업로드 차단

           ▶ 파일 업로드 가능 여부를 검증하는 기능을 서버 사이드 스크립트(ServerSide Script)로 구현하여 우회 기법을 통한 업로드 공격을 사전에 차단

           ▶ 다음 그림과 같이 javascript로 필터링 기능을 구현할 경우 사용자가 임의로 수정 및 삭제 할 수 있으므로 차단기능을 우회 가능

 

 

           ▶ 파일 업로드 필터링 방식은 White-List 방식을 이용(업로드 가능한 확장자만 업로드 허용)하여 확장자 변경 등의 우회 기법을 차단

 

           ※ White-List 방식 : 업로드 할 파일(정상패턴)만 허용, 이외 모두 차단

 

        ④ 파일이 업로드 되는 디렉토리(위치 및 파일명)가 사용자에게 노출되지 않도록 조치

           ▶ 파일을 저장할 경우 파일명을 변경하여 저장하고 실제 파일명은 데이터베이스에 보관하는 등 정보를 이원화하여 운영

 

    ⑵ 홈페이지 개발 보안 조치

        ① 홈페이지 소스코드는 미리 정의된 업로드 파일의 확장자만 허용하고 그 외 확장자는 업로드를 제한하고, 저장 시 외부에서 입력된 파일명을 그대로 저장되지 않도록 코드 수정

 

        ※ 기재될 홈페이지 개발 보안 방안 - 파일 업로드를 참조, 소스코드를 수정하여 보안취약점을 조치하시길 바람




※ 문의 사항은 메일 : jyuhm@sntkor.com 이나 070-8611-4853


문의 사항 남기기