XSS (Cross-Site Scripting) / CSRF (Cross-Site Request Forgery)

  • 먼저 XSS에 대해 알아볼텐데요, XSS는 사이트 간 스크립팅이라고 불리우며 웹 앱에서 자주 나타나는 취약점 중 하나로 해커가 웹 페이지에 악성 스크립트를 삽입해 사용자의 로그인 정보들을 탈취하는 공격 방식을 말합니다.

  • 또 오늘 알아볼 CSRF는 무엇일까요? CSRF는 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹 페이지를 보안에 취약하게 하거나 수정 삭제 등의 작업을 하게 만드는 공격 방법입니다.

  • XSS와 CSRF는 언뜻 보면 비슷해 보이지만 XSS는 공격 대상이 클라이언트고, CSRF는 서버라는 차이점이 존재합니다.



XSS와 CSRF는 우리가 어디서 접할까?

  • XSS부터 알아봅시다. 먼저 우리는 발신자가 불분명한 이메일을 확인하지 않는 것이 좋습니다. 발신지가 불분명한 이메일을 클릭하는 순간 XSS 공격으로 공격자가 우리의 정보를 가져가기 때문입니다.

  • 특정 스크립트 명령어가 삽입된 이메일을 클릭하면 PC가 악의적인 사이트에 자동 접속하여 저장 자료를 절취하는 악성코드를 설치하게 될 수 있습니다. 이렇게 특정 스크립트 명령어를 넣는 공격 방식이 XSS입니다.

  • CSRF는 대형 쇼핑 업체의 해킹 사건이 적절한 예시인데요. 2008년 한 대형 쇼핑 업체에서 1,800만 명의 고객 개인 정보가 해킹 당한 사건이 발생했었습니다. 해킹은 다음과 같은 CSRF 공격으로 진행되었습니다.

  • 쇼핑 업체의 한 관리자가 로그인 상태로 작업을 하던 도중 메일을 확인했습니다.
  • 공격자는 태그가 들어간 코드를 관리자 메일로 발송했고, 관리자는 내용 안 이미지 크기가 0이었기 때문에 전혀 알지 못한 상태였습니다.
  • 관리자가 이메일을 열자 이미지 파일을 받아 오기 위해 URL이 열렸습니다.
  • 공격자는 쿠키를 통해 관리자의 정보를 빼냈습니다.


더 알아보기

XSS 공격 방식 - Stored Xss

  • 접속자가 많은 웹 사이트를 대상으로 XSS 취약점이 있는 웹 서버에 공격자가 악의적인 스크립트를 입력해 놓고, 사용자가 해당 페이지를 읽는 순간 사용자의 브라우저를 공격하는 방식입니다.
  • 가장 일반적인 예시로는 게시판의 HTML 문서 안의 script를 이용하여 악성 스크립트를 삽입하는 방식이 존재합니다.
    <script>
    	alert(document.cookie);  
    </script>
  • 해당 명령어는 브라우저의 쿠키 값을 보여 주는 스크립트입니다. 이러한 명령어를 통해 사용자의 쿠키 값을 얻는 방식입니다.
  • 공격자는 XSS 공격 스크립트를 웹 사이트의 게시판 등에 삽입한 후 사용자가 그 게시물을 클릭할 때까지 기다립니다. 사용자가 공격자의 게시물을 열람하는 순간 스크립트 코드가 사용자에게 전달됩니다. 이때 웹 브라우저는 스크립트 코드를 실행하고 사용자의 세션 쿠키 정보가 공격자에게 전달됩니다. 이후 공격자는 세션 쿠기를 사용해 사용자의 권한으로 웹 사이트 접속이 가능해집니다. 즉, 악의적인 스크립트 코드가 DB에 저장되고, 사용자가 클릭하는 경우마다 실행된다는 특징을 가집니다.

XSS 공격 방식 - Reflected XSS

  • 악성 스크립트가 포함된 URL을 사용자가 클릭하도록 유도하여 클라이언트를 공격하는 방법입니다.
http://www.reflectedxss.com/search/?q=<script>alert(document.cookie)</script>
  • 위 코드를 작성하면 일반적으로 사용자가 검색을 할 경우 검색 결과가 있는 경우 사용자에게 검색 결과를 전달하는 것과 다르게, 서버에서 결과값이 없는 경우 HTML 페이지에 포함된 악성 스크립트가 브라우저에서 실행됩니다.

  • Reflected XSS 공격은 이메일이나 다른 웹 사이트 등 다양한 경로로 피해자 시스템에 전달됩니다. Stored XSS와 다르게 데이터베이스에 스크립트가 저장되지 않고 응답 페이지로 바로 클라이언트에게 전달된다는 차이점이 존재합니다.


CSRF 공격 방식

  • 사용자의 의지와 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격입니다. 즉, 조작된 요청 정보가 삽입된 게시물이나 이메일을 클릭하면 사용자의 권한으로 의도하지 않는 조작된 요청을 웹 서버에 전송하여 회원정보를 변경하거나 게시판 설정을 변경하는 등의 행위가 발생하는 공격 방법입니다.


XSS / CSRF를 알아야 하는 이유

  • 네이버 카페나 다음 카페를 이용하다 보면 무분별한 광고 게시판을 볼 수 있습니다. 이 스팸 광고들은 CSRF 공격에 의해 발생된 것이고, 개발자들은 사용자들이 불편을 겪지 않도록 적절한 대응을 해야합니다.
profile
나 혼자 보려고 만든 개발 일기

0개의 댓글