ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • XSS(Cross Site Scripting)의 취약점 및 대응방안
    0x04 Security/news 2008. 8. 18. 09:42







    사회적으로 문제가 되고 있는 개인 정보 유출은 지난 시간 알아본 SQL Injection 공격처럼 공격자가 DB에 직접 접근하는 방식을 이용할 수도 있지만, XSS 와 같은 방식을 이용할 수도 있습니다. 우리나라의 웹 사이트들은 대부분 XSS 공격에 취약합니다. 게다가 우리가 흔히 하는 웹 서핑 동안에도 깨닫기 전에 XSS 공격에 쉽게 노출될 수 있습니다.

    1.1               XSS 이란?

    Cross Site Scripting”의 약자로 줄여서 CSS라고도 하며, 일반적으로 XSS 라고 불립니다.

    XSS 는 동적 생성 웹 페이지에 악의적인 스크립트를 넣어, 사용자가 해당 웹 페이지를 열람할 경우 삽입한 스크립트가 실행하도록 함으로써 사용자의 정보를 탈취하는 웹 해킹 기법입니다.

    XSS 공격은 XSS 취약점이 있는 웹 사이트에 대한 공격이 아닌, 그 웹 사이트를 이용하는 사용자들에 대한 공격입니다.

    게시판 등 사용자의 입력을 받아들이는 부분에 스크립트 코드를 필터링하지 않음으로써 공격자가 스크립트 코드를 실행할 수 있도록 설계된 어플리케이션의 취약점을 이용한 공격입니다.

    1.2               XSS 유형

           Client-to-Client 방식

    -         한 클라이언트에서 다른 클라이언트로 악의적인 코드가 전달되는 방식입니다.

    -         게시판에 <script> 태크를 이용하여 글을 쓰는 방식으로 악의적인 코드를 전달할 수 있습니다.

           Client-to-itself 방식

    -         악의적인 코드를 공격 대상이 되는 클라이언트에게 보내서 되돌려 받는 방식입니다.

    -         주로 이메일이나 웹 페이지를 통해 링크를 제시하고 사용자가 그러한 링크를 클릭하도록 유도하는 방식입니다.

    2.       XSS 동작방식

    2.1               공격방법

           공격자는 사용자의 입력을 받는 게시판이나 검색 엔진과 URL 주소를 찾아, 스크립트가 동작하는 것을 확인합니다.

           일반적으로 사용자의 쿠키를 추출하는 악성 스크립트를 작성한 뒤 XSS 취약점이 있는 게시판과 이메일에 보냅니다.

           게시판 및 이메일을 읽는 순간, 사용자의 쿠키 정보를 공격자에게 넘어갑니다.

           공격자는 사용자에게서 추출한 쿠키 값을 얻은 뒤 그 값을 이용해 쿠키 스푸핑이나 쿠키 조작을 하여 다른 사용자로 로그인을 시도합니다.

    3.       조치방안

    3.1               관리자 입장에서의 대응방안

           중요한 정보는 쿠키에 저장하지 않습니다.

           사용자가 입력 가능한 문자를 정해놓고 그 문자열이 아니면 모두 필터링 합니다.

           사용자의 입력이 필요한 부분에 HTML 포맷의 입력은 사용할 수 없도록 설정합니다.

           사용자의 입력이 필요한 부분에 스크립트가 있는 경우 글 올리기를 제한합니다.

    3.2               사용자 입장에서의 대응방안

           이메일이나 링크가 있다면 바로 링크를 클릭하지 않고 직접 URL 주소를 입력하여 사이트를 방문하도록 합니다.

           최신 패치를 이용하여 인터넷 익스플로러 자체의 취약점에 대해 미리 대응합니다.

           인터넷 옵션에서 개인 정보 등급을 조절하여 불필요한 쿠키 값을 전송하지 않도록 합니다.

    4.       점검방법

           게시판 등에 글쓰기 기능이 있는지 확인 합니다.

    -         웹 페이지 전체에 걸쳐 글쓰기 기능이 전혀 없으면 XSS 취약점은 존재하지 않는 것입니다.

           글쓰기 본문에 [그림 5]와 같이 스크립트 문장을 입력하고 게시하여 봅니다.

    -         글을 게시하는 중에 스크립트 태그 사용에 대한 에러 및 경고 메시지가 발생하면서 등록이 되지 않는다면 XSS 취약점은 존재하지 않는 것입니다.

    -         윈도우 경고창이 전혀 뜨지 않고 글 본문에 스크립트 문장이 입력한 그대로 나오면 XSS 취약점이 존재하지 않는 것입니다.

    -         윈도우 경고창을 통해 “xss 취약점 존재 확인” 라고 뜬다면 XSS 취약점이 존재하는 것입니다.

    5.       결론

    Web 2.0 환경에서 가장 큰 보안위협은 XSS라 해도 과언이 아닐 것 입니다.

    XSS 취약점 공격에 대해서는 일회성이 아닌 지속적인 대응이 필수적이며 2차 피해를 막기 위해서는 사용자들의 보안 강화 노력도 상당히 중요합니다.

    XSS 자체로는 직접적 개인정보가 유출되기 어렵습니다. 하지만 XSS에 취약한 게시판을 이용해 제3의 페이지로 연결시켜 악성코드를 다운로드받게 할 수도 있고 패치가 안된 PC를 웜에 감염시킬 수도 있기 때문에 주의를 기울여야 합니다.

    XSS는 신규패턴이 늘어남에 따라 지속적으로 관심을 갖고 점검하는 것이 가장 중요한 대응방법이라고 생각합니다.

    6.       웹 어플리케이션의 공격기법 종류

    이 외에도 웹 사이트는 많은 취약점에 노출되어 있습니다. 대표적인 웹 해킹 기법은 다음과 같습니다.

           SQL Injection : 웹 어플리케이션에 의도적으로 sql문을 삽입하여 로그인 인증과정을 우회하거나 공격자의 악의적인 쿼리문을 DB에 보낼수 있는 공격

           Parameter Manipulation(파라미터 변조) : 웹 어플리케이션이 사용자의 파라미터값을 검증하지 않을 경우 이를 악용하여 어플리케이션이 비정상적으로 동작하게끔 하는 공격

           Brute Force Attacks(사전식 공격) : Get 이나 Post 방식으로 인증하는 페이지에서 특정 ID에 대해 패스워드를 무한 입력하여 해당 ID의 패스워드를 획득할수 있는 공격

           Buffer Overflows(버퍼오버플로우) : 웹 서버에서 구동되는 실행파일에 비정상적인 버퍼 값을 입력시켜 시스템을 다운시키거나 관리자권한을 획득하는 공격

Designed by Tistory.