ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • comsec(한승협)'s Cross Site Script ?
    Team $!9N 구성원의 글 2019. 11. 30. 23:50

     

    CSS 와 CSRF 를 어떤 방식으로 설명해야 모호하지 않을지에 대해서 고민한 뒤, 글을 작성해야겠다는 필요성을 느꼈다. 면접 단골질문 중 하나이기도 하기 때문이다. 이번 포스팅에서는 CSS에 대해서 알아보도록 한다.

     

     

    예전보다는 순위(2017년 기준 3위)가 내려갔지만, 올해(7위)에도 어김없이 등장하는 크스스(CSS).... 

    이 놈에 대해서 알아보도록 하자!

    출처 : https://blog.sucuri.net/

     

     

    Cross Site Script 란, Client가 자신도 모르게 제 3자의 Script 를 실행하도록 하는 공격기법을 말한다.

    이 때, 중요한 것은 Client 가 피해를 받는다는 점이다.

     

     

     

     

     

    자, 그럼 어떤 방식으로 이루어질 수 있는지에 대해서 알아보자.

     

     이 챕터를 작성하게된 이유는 대부분의 크스스의 예로는 아래와 같은 alert("1") 과 같은 기본적인 기능에 대해서만 나타내는 것이 대부분이기 때문에 많은 학생들이 크스스의 위험성을 간과하는 경우가 많다. 크스스를 통해 원격서버에 해당정보를 보낼 수 있다는 사실 조차 모르는 학생들이 많다. 또한, 크스스를 사용하면 alert 창이 뜨기 때문에 Client 가 쉽게 인지할 수 있다고 생각하는 학생들 또한 있었다.

     

    하지만, 이 또한 XSS 하면 <script>alert(1);</script> 라는 잘못된 생각에서 갈라져 나온 오개념이다.

     

    간단하게 말해서 script 가 돌아가는 것이기 때문에 alert 를 제외한 많은 구문또한 작동한다는 의미가 된다. script 구문을 이용해서 외부 서버에 document.cookie 를 보내는 등의 script 를 작성할 수 있을 것이다. 활용범위는 그만큼 다양하다.

    getXMLHTTPRequest 객체를 생성해서 document.cookie 를 원하는 경로에 전송하는 등의 방법이 있을 수 있습니다.

     

     

     

    Cross Site Script 를 악용하여 발생할 수 있는 대표적인 사례로는 Client 의 세션값 또는 쿠키값을 탈취하는 것이 있다.

    만약!! 해당 사이트의 인증체계가 세션으로만 이루어져 있다면, 공격자는 피해자의 계정을 탈취할 수 있게 된다.

    ( 피해를 입은 주체는 Client 가 된다. )

     

    ( 만약 IP 와 같은 추가적인 인증체계가 걸려있다면 세션값 탈취만으로는 계정을 탈취할 수 없다. 하지만, 인증체계가 추가될수록 서버에는 부하가 생기며, 일부 추가 인증체계 같은 경우에는 사용자에게 불편을 초래할 수 있다는 점을 인지해야한다!! ) 

    정리 : 세션값 탈취 = 사용자 계정 탈취 (X)

     

     

     

     

     얼마 전, 친한 동생이 운영하는 사이트의 점검을 의뢰받아서 블랙박스 테스팅을 해본 결과 크스스가 터진것을 발견할 수 있었다. 사이트의 기능을 보니 해당 사이트에 접속하는 Client 들의 쿠키값 및 세션값을 탈취할 수 있었다. 또한, 학교 후배들이 개발한 사이트 중에서도 크스스에 취약성을 보이는 사이트가 많았다. 이를 통해서 초급 개발자의 경우 놓치기 쉬운 부분이라는 것을 알 수 있었다.

     

     

     이를 막기 위해서는 역시, Client 가 입력할 수 있는 벡터에서 필터링을 잘해주어야 한다. <script> 를 필터링하는 것만으로도 일부 크스스를 막을 수 있다. 하지만, 이도 완벽히 보안된 필터링은 아니다. 이에대한 내용은 추후 포스팅을 할 예정이다. 

     

     

    후배의 어플리케이션에서 발견한 크스스이며, 이는 공개여부에 대해 사전 협의에 의해서 캡쳐한 내용입니다. 해당 서비스는 현재 이에 대한 부분을 보안패치하였습니다. ^^

     

     

    'Team $!9N 구성원의 글' 카테고리의 다른 글

    보안 이야기(역사)  (0) 2019.12.01

    댓글

Designed by Tistory.