본문 바로가기
💻Information Security

XSS 공격 시나리오

by Prof. Panda 2024. 1. 29.

John Schnobrich on Unsplash

XSS 공격시나리오를 고민해야 할 이유

XSS 취약점은 상당히 다양한 형태를 가지고 나타날 수 있습니다. 유저의 인풋 뿐만 아니라 파라미터를 전송하는 것에도 반응할 수 있기 때문에 범위가 상당히 넓고 모두 예측하기 어렵습니다. 따라서 특정 XSS 취약점이 존재하는 것에 따라서 어떤 위험이 발생할 수 있는지에 대한 시나리오를 고민해야 우선순위를 정해서 고치거나 취약점의 존재여부를 우선적으로 탐지할 수 있습니다. 

공격 시나리오의 예시 6가지

앞서 말했듯이 XSS 취약점은 매우 다양하게 존재할 수 있고 그 시나리오도 무궁무진합니다. 어느정도의 예시를 위해서 아래 6가지를 한번 언급해보도록 하겠습니다.

  1. 쿠키탈취와 세션 하이재킹
  2. 키로깅
  3. 피싱 또는 피싱사이트 이동
  4. 관리자 권한 탈취
  5. 악성코드 다운로드
  6. HTML 인젝션

1. 쿠키탈취와 세션 하이재킹

가장 범용적인 시나리오입니다. XSS 취약점을 이용해서 다른 유저의 쿠키 데이터를 탈취할 수 있습니다. 쿠키 데이터에는 세션값도 들어있기 때문에 세션 하이재킹도 가능할 수 있습니다. 공격자는 XSS 공격 페이로드가 담긴 URL로 희생자를 유도하고, 희생자가 접근한다면 쿠키의 값이 공격자의 서버로 전송되기 됩니다. 공격자는 쿠키값에 담긴 정보에 따라 추가적인 공격을 실행할 수 있습니다.

2. 키로깅

일반적으로 페이로드가 조금 긴편이지만 실행할 수 있다면 희생자가 입력하는 값이 공격자의 서버로 전송되게 됩니다. Reflected XSS보다는 Stored XSS로 실행될 가능성이 더 높습니다. 로그인 페이지나 회원가입 페이지 등 민감한 정보를 입력해야 하는 곳에 심어진다면 유저가 입력하는 민감한 정보가 담긴 값을 도청할 수 있게 됩니다.

3. 피싱 또는 피싱사이트 이동

피싱사이트의 경우 기존의 신뢰받을만한 사이트인 것으로 착각하게 해서 민감한 정보를 빼내거나 악의적인 코드가 담긴 파일들을 다운로드 받게 하는 등의 행위를 할 수 있습니다. 키로깅과의 차이점은 키로깅은 실제 사이트에 XSS 취약점을 발견해서 입력되는 내용을 도청하는 방식이라면, 피싱의 경우 피싱사이트로 희생자를 유도하거나 리다이렉트 하는 등의 공격을 하게 됩니다. 피싱사이트로 희생자가 유도된다면 희생자가 알아채지 못한 경우 값이 매우 정확하게 공격자에 서버로 보내지게 됩니다. 

4. 관리자 권한 탈취

1번의 쿠키와 세션 탈취를 통한 공격의 대상이 관리자인 경우 발생할 수 있습니다. 관리자를 대상으로 한 경우 이메일을 통해 URL을 전송하는 등, 조금 더 정밀하게 공격할 수 있습니다. 모든 관리자들이 보안에 대한 지식이 충분하지 않을 수 있다는 것을 고려하면 관리자라고 해서 이러한 공격에 대해서 더욱 잘 대응할 것이라는 생각을 버려야합니다. 관리자의 권한을 탈취한 경우 상황은 매우 심각해질 수 있습니다. 관리자가 가진 권한이 DB를 다루는 권한과도 연결이 된다면 추가적이고 광범위한 피해가 발생할 수 있습니다.

5. 악성코드 다운로드

공격자가 XSS 취약점을 발견하여 악성코드를 다운로드하게 하거나, 드물게 페이로드 등을 통해서 웹상에서 악성코드가 작동하도록 할 수 있습니다. XSS 취약점을 이용해서 다운로드하게 할 수 있지만, 3번의 피싱이나 리다이렉트를 통해서도 희생자가 악성코드를 다운로드하도록 유도할 수도 있습니다. 

6. HTML 인젝션

HTML이나 CSS를 인젝팅하는 방식의 XSS 공격은 그 위험성이 크지 않다고 생각할 수 있지만 피싱사이트로 직접 리다이렉트 하지 않고도 유사한 공격을 할 수 있다는 점에서 과소평가해서는 안되는 시나리오입니다. 예를 들어 신뢰되는 게시판이나 특정 장소에 임의의 게시판이나 URL로 유도하는 링크 버튼 등을 생성해서 희생자를 유도하여 추가적인 단계를 통해 임의의 공격을 실행할 수 있습니다.