XSS(Cross-Site Scripting)

이주안·2024년 8월 16일

정의

웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격 기법.

사용자가 글을 쓰고 읽을 수 있는 게시판에 많이 발생하지만, 사용자의 입력 값을 웹 페이지에 보여주는 곳에서도 발생.

악의적인 사용자가 C&C 서버로 리다이렉션 하기 위해 리다이렉션 스크립트를 주입하여 중간 경유지로 활용하기도 하고, 사용자의 쿠키를 탈취하여 세션 하이재킹(Session Hijacking) 공격을 수행하기도 함.

공격 종류 및 방법

1. Persistent(or Stored) XSS

XSS 공격 종류 중 하나인 Persistent XSS 는 말 그대로 지속적으로 피해를 입히는 XSS 공격.

  1. 해커는 웹 애플리케이션에서 XSS 취약점이 있는 곳을 파악하고, 악성스크립트를 삽입
  2. 삽입된 스크립트는 데이터베이스에 저장이 되고, 저장된 악성스크립트가 있는 게시글 등을 열람한 사용자들은 악성스크립트가 작동하면서 쿠키를 탈취당한다던가, 혹은 다른 사이트로 리다이렉션 되는 공격을 받게 됨.

데이터베이스에 저장이 되어 지속적으로 공격한다고 하여 Persistent XSS 라고 부르며, 데이터베이스에 저장이 되므로
Stored XSS 공격이라고 부르기도 함.

2. Reflected XSS

Reflected XSS 공격은 사용자에게 입력 받은 값을 서버에서 되돌려 주는 곳에서 발생.

  1. 사용자에게 입력 받은 검색어를 그대로 보여주는 곳이나 사용자가 입력한 값을 에러 메세지에 포함하여 보여주는 곳에 악성스크립트가 삽입.
  2. 서버가 사용자의 입력 값을 포함해 응답해 줄 때 스크립트가 실행.

보통 Reflected XSS 는 공격자가 악의적인 스크립트와 함께 URL을 사용자에게 누르도록 유도하고, URL을 누른 사용자는 악의적인 스크립트가 실행되면서 공격을 당하게 됨.

3. DOM based XSS

DOM based XSS 는 악의적인 스크립트가 포함 된 URL을 사용자가 요청하게 되어 브라우저를 해석하는 단계에 발생하는 공격.
악의적인 스크립트로 인해서 클라이언트 측 코드가 원래 의도와는 다르게 실행.
DOM based XSS 공격은 다른 XSS 공격과는 다르게 서버 측에서 탐지가 어렵다.

0개의 댓글