이것이 점프 투 공작소

XSS(크로스 사이트 스크립팅)에 대해 알아보자 본문

해킹,보안

XSS(크로스 사이트 스크립팅)에 대해 알아보자

겅겅겅 2023. 8. 23. 22:47

XSS란?

웹 어플리케이션에서 발생하는 보안 취약점 중 하나입니다.

공격자가 악의적인 스크립트 코드를 삽입하여 의도치 않은 행동을 수행시키거나 쿠키, 세션 토큰같은 민감한 정보를 탈취하거나 악성코드가 있는 페이지로 리다이렉트 시키는 방식으로도 진행됩니다.

주로 JavaScripe를 통해서 일어나며 크게 3가지 공격으로 분류됩니다.

(원래 CrossSiteScript 즉 CSS지만 이미 CSS가 있기에 XSS라고 부른다고 합니다..ㅎ)

 

이렇게 input에 JS를 입력하면

이렇게 공격이 실행 되는 방식입니다.

Stored  XSS

악의적인 스크립트 코드를 서버에 영구적으로 저장시켜, 페이지를 방문하는 모든 사용자에게 스크립트 코드가 실행될 수 있게 하는 공격입니다.

예를들어 특정 사이트의 게시판에 악성 스크립트가 삽입된 게시글을 등록하면, 해당 게시글을 조회하는 사용자에게 악의적인 스크립트 공격이 가해지게 됩니다.

Reflected XSS

공격자의 입력 데이터가 서버로 전송 후, 서버에서 변환된 데이터가 웹 페이지에 표시될 때 발생하는 공격입니다.

스크립트 코드가 입력되는 즉시 발생하기에, 공격자의 악의적인 스크립트가 사용자에게 즉각적으로 전해지기에 피싱공격에 주로 사용됩니다.

DOM-based XSS

DOM 즉 클라이언트 측 코드에서 실행되는 XSS공격입니다.

웹서버와 통신 없이 진행되는 공격이기에 서버측 필터링으로 방어 할 수 없습니다.

XSS 방어방법

  • 입력 데이터의 유효성 검증 및 이스케이핑: 사용자 입력을 검증하고, 데이터를 이스케이핑하여 스크립트가 실행되지 않도록 합니다.
  • Content Security Policy (CSP) 설정: 웹 페이지에서 실행 가능한 스크립트 등을 제한하여 공격을 어렵게 만듭니다.
  • 입력 데이터 필터링: 특정 문자나 스크립트를 필터링하여 악성 코드를 차단합니다.
  • HttpOnly 속성 설정: 세션 쿠키 등을 HttpOnly 속성으로 설정하여 자바스크립트에서 접근할 수 없도록 합니다.

Beef로 브라우저 후킹

XSS공격의 예시로 위에서 alert(1)을 띄우는 아주 작은 공격을 예시로 들었지만

실제로는 beff나 다른 프로그램들을 이용해 더 많은 일들을 할 수 있습니다.

beef를 사용해 XSS공격으로 사용자의 브라우저를 탈취하는 간단한 예시입니다.

Beef 실행

sudo beef-xss 명령어로 beef 를 실행시킵니다.

실행후에는 Hooking하기위한 JS주소와 beef 웹이 실행됩니다.

및줄친 스크립트는 beef에서 브라우저를 후킹하기 위한 즉 XSS공격 시 사용될 스크립트입니다.

주입할 스크립트

 

후킹을 위한 피싱용 웹서버에 후킹 스크립트 주입.

테스트를 위해 직접 서버에 스크립트를 칼리의 아파치 서버의 html에 후킹을 위한 스크립트를 넣어줍니다.

아파치 서버를 실행시킵니다.

 

이후 특정 사용자가 윈도우를 통해 칼리에서 실행중인 아파치 서버에 접속하게되면

스크립트가 존재하는 사이트에 접속한 사용자 정보 탈취

공격자는 beef를 통해 사용자에대한 많은 정보들을 탈취 할 수 있습니다.