파일 다운로드 취약점은 파일 다운로드 기능이 존재하는 웹에서 파일 다운로드 시 파일의 경로 및 파일명을 파라미터로 받아 처리하는 경우 이를 적절히 필터링 하지 않으면 공격자가 이를 조작하여 허용되지 않은 파일을 다운 받을 수 있는 취약점이다. 공격자는 취약점을 이용하여 시스템 환경 설정 파일, 소스 코드 파일, DB 연동 파일 등 중요한 파일을 다운 받을 수 있다.

 

점검 방법

  - 게시판 또는 공지사항, 자료실 등에서 cgi, jsp, php 등의 프로그램을 이용하여 파일을 다운로드 받는 페이지가 있는지 조사한다.

 

  - 다음과 같이 파일 다운로드를 시도한다.

    * ../../../../etc/passwd

    * ../../../../winnt/win.ini

    * ../../../../boot.ini

    * ../../../../wp-config.php (워드프레스인 경우)

    * xx/direct_download.php?file=./direct_download.php

 

  - 인코딩을 적용하여 해당 파일 내용이 표시되는지 확인한다.

    * url 인코딩 : .(%2e), /(%2f), \(%5c)

    * 16bit 유니코드 인코딩 : .(%u002e), /(%u2215), \(%u2216)

    * 더블 url 인코딩 : .(%252e), /(%252f), \(%255c)

 

  - ..//, ....\\, 등을 적용하여 패턴을 반복하지 않음으로써 방화벽 우회를 시도한다.

 

  - null바이트 인젝션 시도한다.

    * ../../../../etc/passwd%0a.jpg

 

  - 특정 디렉터리나 파일을 먼저 입력한 후 탐색 문자열을 입력한다.

    * /was/tomcat/image/../../../../etc/passwd

 

 

대응방안

  - 외부에서 입력하는 파일 경로와 이름에 대해 허용하는 경로 이외의 디렉터리와 파일에 접근할 수 없도록 처리한다.

 

  - 외부 입력값에 대해 파일 경로를 변경할 수 있는 문자열에 대해 필터링한다.

 

  - php로 개발된 경우 php.ini의 내용 중 magic_quotes_gpc 항목을 on으로 설정하여 ".\와 ./" 입력 시 치환되도록 설정한다.

'Web Hacking > 이론적인 내용' 카테고리의 다른 글

Command Injection이란?  (0) 2017.09.29
파일 업로드 취약점이란?  (0) 2017.09.22
CSRF(Cross Site Request Forgery)란?  (0) 2017.09.08
XSS란?  (2) 2017.09.01
SQL Injection이란?  (0) 2017.08.24
블로그 이미지

꼴통보안인

,

CSRF(Cross Site Request Foregery)웹 애플리케이션에서 정상적인 경로를 요청한 요청과 비정상적인 경로를 통한 요청을 서버가 구분하지 못할 경우 공격자가 스크립트 구문을 이용하여 정상적인 사용자로 하여금 조작된 요청을 전송 하도록 하여 게시판 설정 변경, 회원정보 변경 등의 문제가 발생할 수 있는 취약점이다. 공격자가 공격을 당한 사용자의 권한을 그대로 사용하므로 공격 당한 사용자의 권한 수준에 따라 피해 범위가 달라진다. 악성 사이트를 유도하지 않고 사용이 가능하며 XSS와 헷갈리는 이유는 XSS와 같이 사용해야 훨씬 깔끔하게 피싱 사이트로 유도하는 등의 이점이 존재하기 때문이다.

 

 

 

대응 방안

  - 중요 정보는 쿠키에 저장하지 않는다.

  - XSS 취약점 확인

  - referer 확인

  - 단순한 Session Token만 이용한 권한 부여 금지

  - 정보 변경시 CAPTCHA를 이용하여 인증

  - GET/POST 구분

  - FORM 대신 AJAX를 통한 JSON API만 사용

'Web Hacking > 이론적인 내용' 카테고리의 다른 글

파일 업로드 취약점이란?  (0) 2017.09.22
파일 다운로드 취약점이란?  (0) 2017.09.15
XSS란?  (2) 2017.09.01
SQL Injection이란?  (0) 2017.08.24
DCL(데이터 제어어)란?  (0) 2017.08.11
블로그 이미지

꼴통보안인

,

XSS(Cross Site Script)란 웹 어플리케이션에서 사용자 입력 값에 대한 필터링이 제대로 이루어지지 않을 경우, 공격자가 입력이 가능한 폼에 악의적인 스크립트를 삽입하여 해당 스크립트가 희생자 측에서 동작하도록 하여 악의적인 행위를 수행하는 취약점이다. 공격자는 취약점을 이용하여 사용자의 개인정보 및 쿠키정보 탈취, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행한다.

 

XSS 공격 종류

  - Stored XSS (저장형 XSS)

    * 공격자가 취약한 웹서버에 악성 스크립트를 저장하면 희생자가 해당 자료를 요청할 떄 해당 악성 스크립트가 삽입된 응답 페이지가 전달되어 클라이언트 측에서 동작하는 방식이다.

 

 

 

  - Reflected XSS (반사형 XSS)

    * 외부에 있는 악성 스크립트가 희생자 액션에 의해 취약한 웹서버로 전달되고, 웹서버의 응답 페이지에 해당 악성 스크립트가 삽입되어 희생자 측에서 동작하는 방식이다.

 

 

 

  - DOM based XSS (DOM 기반 XSS)

    * 희생자의 웹 브라우저에서 응답 페이지에 포함된 정상적인 스크립트가 동작하면서 DOM 객체를 실행할 때 URL 등에 포함된 악성 스크립트가 동작하는 방식이다. 응답 페이지에 관계없이 웹 브라우저에서 발생한다.

 

 

 

대응방안

  - 사용자 입력값 검증을 반드시 서버단에서 한다.

  - 사용자 입력 문자열에서 HTML 코드로 인식될 수 있는 특수문자를 일반문자로 치환하여 처리한다.

 

HTML 특수문자 

HTML Entity 

HTML 특수문자

HTML Entity 

<, > 

 &lt;, &gt;

 &quot;

 (, )

 &#x28;, &#x29;

 '

 &#x27;

 &

 &amp;

 #

 &#x23;

 /

 &#x2F

 

 

 

  - 게시판 등에서 HTML 태그를 허용해야하는 경우, HTML 태그 화이트리스트를 선정 후, 해당 태그만 허용하는 방식을 적용한다.

 

'Web Hacking > 이론적인 내용' 카테고리의 다른 글

파일 다운로드 취약점이란?  (0) 2017.09.15
CSRF(Cross Site Request Forgery)란?  (0) 2017.09.08
SQL Injection이란?  (0) 2017.08.24
DCL(데이터 제어어)란?  (0) 2017.08.11
데이터 조작어(DML)이란?  (0) 2017.08.03
블로그 이미지

꼴통보안인

,