XSS (1) INTRO

밍기적·2023년 1월 1일
0

웹해킹

목록 보기
22/35
post-thumbnail

크로스 사이트 스크립팅


공격자가 상대방의 브라우저에 스크립트가 실행되도록 하여 세션을 가로채거나, 웹사이트 변조, 악의적 콘텐츠 삽입 또는 피싱 공격을 하는 공격 방법중 하나 입니다

XSS 취약점은 스크립트 언어와 취약한 코드를 대상으로 진행합니다

공격자는 자바스크립트 언어를 이용하여 페이지에 삽입이 가능합니다

취약점을 이용하여 다음과 같은 것들을 수행할 수 있습니다

  • 자바 스크립트로 작성된 코드를 특정 페이지 또는 웹사이트에서 실행하기
  • 코드는 페이지가 로드될 때 마다 실행된다
  • 코드는 서버가 아닌 클라이언트 단에서 실행된다

자바스크립트는 클라이언트 사이드 언어이기 때문에 코드가 실행될 때 클라이언트에서 실행됩니다

리버스쉘을 획득하기 위해서 코드를 실행할 때 결과로 사용자의 쉘을 획득하게 됩니다

  • 웹 서버는 코드를 실행하거나 코드를 전달하는 수단으로만 사용됩니다

3가지 유형의 XSS가 존재합니다

1. Stored XSS (Persistent XSS)


웹 어플리케이션 취약점이 있는 웹 서버에 악성 스크립트를 저장하는 방법입니다. 이로 인해 악성 스크립트가 웹 서버 데이터베이스로 부터 실행됩니다

  • 공격자는 웹 사이트의 게시판, 사용자 프로필 및 Comment 필드 등의 입력 form을 통해 POST 방식으로 악성 스크립트 전달 시 서버는 해당 내용을 데이터베이스에 저장합니다
  • 희생자가 해당 페이지를 get 방식으로 요청 시 서버는 저장된 악성 스크립트를 포함시킨 페이지를 사용자에게 전달하게 되며 희생자는 브라우저에서 스크립트가 실행되어 XSS 공격이 수행됩니다

2. Reflected XSS


반사 XSS는 웹 어플리케이션의 지정된 파라미터를 사용할 때 발생하는 취약점을 이용한 공격입니다

검색 결과, 에러 메시지 등 서버가 외부에서 입력 값을 받아 브라우저에게 응답할 때 파라미터에 삽입된 악성 스크립트를 사용자에게 그대로 전달하면서 발생합니다

  • 공격자는 파라미터에 악성 스크립트를 포함시킨 URL을 작성하여 희생자에게 전달합니다
  • 희생자는 전달 받은 URL을 서버에 요청합니다
  • 웹 서버의 응답 페이지에 악성 스크립트가 포함되어 희생자에게 전달되고
  • 희생자의 브라우저는 응답 페이지 내의 악성 스크립트를 실행하여 XSS 공격이 수행됩니다

3. DOM-Based XSS


DOM(Document Object Model)이란 W3C 표준으로, 정적 문서의 요소들을 객체로 구성하여 브라우저에서 실행되는 스크립트가 HTML, XML 등의 정적 문서의 요소에 동적으로 접근하고 업데이트할 수 있도록 하는 언어 중립적인 API 입니다

DOM에는 HTML 태그와 스크립트가 포함되어 있으며, 브라우저에서 렌더링할 때 스크립트가 실행되어 DOM 문서 내 계층적으로 구성된 객체에 접근하고 읽고 쓰게 되며 웹 페이지의 컨텐츠가 동적으로 변하게 됩니다

  • 공격자는 파라미터에 악성 스크립트를 포함시킨 URL을 작성하고 희생자에게 전달하게 됩니다
  • 희생자의 브라우저는 렌더링 중 HTML을 페이지에 추가하기 위해 innerHTML로 다뤄지는 사용자 입력을 구문 분석하고 페이지를 동적으로 생성합니다
  • DOM-based XSS은 이러한 과정에서 악성 스크립트가 포함된 사용자 입력이 페이지의 HTML 태그에 추가되어 실행되는 공격입니다

서버의 응답 내에는 악성 스크립트가 포함되지 않지만, 브라우저의 응답 페이지 내 정상적인 스크립트가 실행되며 악성 스크립트가 추가되어 실행됩니다

0개의 댓글