먼저 XSS에 대해 알아볼텐데요, XSS는 사이트 간 스크립팅이라고 불리우며 웹 앱에서 자주 나타나는 취약점 중 하나로 해커가 웹 페이지에 악성 스크립트를 삽입해 사용자의 로그인 정보들을 탈취하는 공격 방식을 말합니다.
또 오늘 알아볼 CSRF는 무엇일까요? CSRF는 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹 페이지를 보안에 취약하게 하거나 수정 삭제 등의 작업을 하게 만드는 공격 방법입니다.
XSS와 CSRF는 언뜻 보면 비슷해 보이지만 XSS는 공격 대상이 클라이언트고, CSRF는 서버라는 차이점이 존재합니다.
XSS부터 알아봅시다. 먼저 우리는 발신자가 불분명한 이메일을 확인하지 않는 것이 좋습니다. 발신지가 불분명한 이메일을 클릭하는 순간 XSS 공격으로 공격자가 우리의 정보를 가져가기 때문입니다.
특정 스크립트 명령어가 삽입된 이메일을 클릭하면 PC가 악의적인 사이트에 자동 접속하여 저장 자료를 절취하는 악성코드를 설치하게 될 수 있습니다. 이렇게 특정 스크립트 명령어를 넣는 공격 방식이 XSS입니다.
CSRF는 대형 쇼핑 업체의 해킹 사건이 적절한 예시인데요. 2008년 한 대형 쇼핑 업체에서 1,800만 명의 고객 개인 정보가 해킹 당한 사건이 발생했었습니다. 해킹은 다음과 같은 CSRF 공격으로 진행되었습니다.
- 쇼핑 업체의 한 관리자가 로그인 상태로 작업을 하던 도중 메일을 확인했습니다.
- 공격자는 태그가 들어간 코드를 관리자 메일로 발송했고, 관리자는 내용 안 이미지 크기가 0이었기 때문에 전혀 알지 못한 상태였습니다.
- 관리자가 이메일을 열자 이미지 파일을 받아 오기 위해 URL이 열렸습니다.
- 공격자는 쿠키를 통해 관리자의 정보를 빼냈습니다.
<script>
alert(document.cookie);
</script>
http://www.reflectedxss.com/search/?q=<script>alert(document.cookie)</script>
위 코드를 작성하면 일반적으로 사용자가 검색을 할 경우 검색 결과가 있는 경우 사용자에게 검색 결과를 전달하는 것과 다르게, 서버에서 결과값이 없는 경우 HTML 페이지에 포함된 악성 스크립트가 브라우저에서 실행됩니다.
Reflected XSS 공격은 이메일이나 다른 웹 사이트 등 다양한 경로로 피해자 시스템에 전달됩니다. Stored XSS와 다르게 데이터베이스에 스크립트가 저장되지 않고 응답 페이지로 바로 클라이언트에게 전달된다는 차이점이 존재합니다.