[보안 해킹] 홈페이지 보안 취약점 - 파일 업로드 취약점
■ 취약점 설명 및 사례
⑴ 취약점 설명
- 서버 측에서 실행될 수 있는 스크립트(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
'Security > Hacking & Security' 카테고리의 다른 글
[보안 해킹] 홈페이지 보안 취약점 - 공개용 웹 게시판 취약점 (0) | 2016.10.13 |
---|---|
[보안 해킹] 홈페이지 보안 취약점 - 소스코드 내 중요정보 노출 취약점 (0) | 2016.10.13 |
[보안 해킹] 홈페이지 보안 취약점 - 파일 다운로드 취약점 (0) | 2016.10.11 |
[보안 해킹] 홈페이지 보안 취약점 - 전송 시 주요정보 노출 취약점 (0) | 2016.10.11 |
[보안 해킹] 홈페이지 보안 취약점 - 실명인증 취약점 (0) | 2016.10.10 |