XSS(Cross Site Scripting)란?

해연·2023년 8월 15일
0

네트워크

목록 보기
16/16

악의적인 사용자가 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 넣는 기법

  • 공격에 성공하면 사이트에 접속한 사용자는 삽입된 스크립트 코드를 실행하게 되며, 의도치 않은 행동을 수행시키거나 쿠키나 세션,토큰 등의 민감한 정보를 탈취한다.

공격방법에 따라 Reflected XSS와 Stored XSS로 나뉜다.

Reflected XSS

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

Reflected XSS 과정

  1. 공격자는 악의적인 문자열이 포함한 URL을 조작하고 피해자에게 보낸다.
  2. 사용자는 링크를 열고 웹사이트로에서 악의적인 URL을 요청하도록 속입니다.
  3. 웹 사이트는 사용자에 대한 응답에 악의적인 문자열을 포함합니다.
  4. 사용자의 브라우저는 서버의 응답에서 악의적인 자바스크립트를 합법적인 웹 페이지의 일부로 해석하고 코드를 실행한다.
  5. 사용자의 민감한 정보는 공격자의 서버로 전송된다.

Reflected XSS 특징

  • 사용자에게 입력 받은 값을 서버에서 되돌려 주는 곳에서 발생
  • 피해자가 직접 스크립트를 실행하도록 유도 ~> 1회성 공격
  • 링크를 클릭한 사용자의 쿠키 값을 해커에게 전송하도록 설정
  • 사용자는 버튼 또는 링크를 클릭함으로써 악성 스크립트를 실행 => 악성 스크립트에 감염된 웹 사이트에 입력한 모든 정보가 노출된다.

Stored XSS

웹 사이트의 게시판에 스크립트를 삽입하는 공격 방식
공격자는 게시판에 스크립트를 삽입한 후 공격 대상자가 해당 게시글을 클릭하도록 유도

Stored XSS 과정

  1. 공격자는 스크립트 공격을 가능하게 하는 취약점을 가진 웹 사이트를 발견한다.
  2. 공격자는 각각 방문자의 세션 쿠키를 훔치는 악의적인 스크립트를 가진 웹사이트를 주입한다.
  3. 웹 사이트 방문할 때마다, 악의적인 스크립트가 활성화된다.
  4. 방문자의 세션 쿠키는 공격자에게 전송된다.

Stored XSS가 위험한 이유

  • 해커는 XSS 취약점이 있는 곳에 악성 스크립트를 삽입한다.
  • 악성 스크립트는 데이터베이스에 저장되며, 저장된 악성 스크립트를 열람한 사용자들은 악성 스크립트가 실행되면서 쿠키 등을 탈취당하거나 다른 사이트로 리다이렉션되는 공격을 받게 된다.
  • 한 번의 공격으로 악성 스크립트를 삽입하여 지속적인 피해를 입는다.

대응방안

1. 입출력 값 검증

사용자가 입력한 값에 대한 검증과 사용자가 입력한 값을 그대로 출력할 때 검증이 필요 합니다. XSS Cheat Sheet 에 대한 필터 목록을 만들어 모든 Cheat Sheet에 대한 대응이 가능하도록 하여야 합니다. XSS에 대한 필터링을 적용한 뒤 직접 테스트 하여 스크립트가 실행되는지 모의해킹 해보는 것도 좋은 방법입니다.

2. XSS 방어 라이브러리 , 브라우저 확장앱 사용

XSS를 막아주는 Anti XSS 라이브러리를 여러 회사에서 제공하는데 이 라이브러리를 사용하면 손쉽게 XSS를 방어할 수 있습니다. XSS 라이브러리를 사용하는 것은 서버 단에서 개발자가 추가하는 것이고, 사용자들이 각자 본인의 브라우저에서 악의적인 스크립트가 실행되지 않도록 방어하는 것이 중요합니다. 방문하는 모든 사이트가 안전하다는 보장이 없기 때문에 브라우저 확장 앱 중 Anti XSS 를 해주는 애플리케이션을 설치하고 방어하여야 합니다.

3. 웹 방화벽 사용

웹 방화벽은 웹 공격에 특화되어있기 때문에 XSS 공격을 방어하기 위함만이 아니라 각종 Injection 공격을 효과적으로 방어할 수 있습니다.


참고
https://namu.wiki/w/XSS
https://nordvpn.com/ko/blog/xss-attack/
https://noirstar.tistory.com/266

profile
물음표를 느낌표로 바꾸며 성장하는 예비 백엔드 개발자입니다.

0개의 댓글