sharingStorage

XSS - 보안 본문

보안

XSS - 보안

Anstrengung 2021. 12. 24. 17:00
XSS란??

[게시판이나 웹 메일 등에 악성 스크립트를 삽입해 개발자가 고려하지 않은 기능이 작동하게 하는 웹 해킹 공격기법]

 

 

-  cross-site scripting의 약자로 CSS라고 하는 것이 맞지만 이미 CSScascading style sheets의 약어로 사용되고 있어 XSS라고 한다.

 

- 대부분의 웹 해킹 공격기법과는 다르게 클라이언트 즉,  사용자를 대상으로 한 공격이다.

 

- 다른 웹사이트와 정보를 교환하는 식으로 작동하기 때문에 cross-site라는 이름이 붙게 되었다. 스크립트 내용에 따라서 쿠키나 세션 토큰 등의 탈취가 가능해서 이를 인증이나 세션관리에 사용하고 있는 사이트에 침입하거나 심각한 피해를 입힐 가능성이 있다.

 

 

Reflected XSS

 

 

취약점이 존재하는 페이지를 미리 탐색한 후 XSS공격을 위한 스크립트가 포함된 URL을 공격대상자에게 노출 시키는 방법입니다.

DB에 저장하여 공격하는 것이 아닌 1회용 공격으로 볼 수 있습니다.

 

 

 Reflected XSS공격 과정
  1. 공격자가 미리 XSS 공격에 취약한 웹사이트를 탐색하고, XSS공격을 위한 스크립트를 포함한 URL을 사용자에게 노출시킵니다. 이메일, 쪽지등으로 URL을 노출시키는 것으로 예를 들 수 있습니다.
  2. 사용자가 해당 URL을 클릭 할 경우, 취약한 웹사이트의 서버에 스크립트가 포함된 URL을 통해 request를 전송한다
  3. 웹서버에서는 해당 스크립트를 포함한 response를 전송하는 방식으로 공격이 이루어집니다.

 

 

    • 공격자가 http요청에 악성 콘텐츠를 주입하면 그 결과가 사용자에게 “반사되는” 형태
    • 링크를 클릭하도록 피해자를 속이고 유인해 세션을 *하이재킹 할 수 있는, 다시말해 세션을 가로챌 수 있는 공격
    • 피싱공격에서 가장 많이 사용됨 

 

 

웹사이트의 게시판에 스크립트를 삽입하는 공격으로 지속적이고 광범위하게 활용할 수 있습니다.

주로 게시판, 쪽지함 등과 같은 저장형 형태의 게시글에서 많이 이용됩니다.

 

 

Stored XSS 공격과정
  1. 공격자가 미리 xss공격에 취약한 웹사이트를 탐색하고 xss공격을 위한 스크립트를 포함한 게시글을 웹사이트에 업로드 합니다
  2. 게시글의 URL을 사용자에게 노출하여 해당 게시글을 클릭하도록 유도합니다.
  3. 사용자가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송하게 됩니다.
  4. 웹 서버에서 스크립트를 포함한 response를 전송하며 공격이 수행되는 형태입니다.

 

피해자의 브라우저에서 DOM 환경을 수정하여 사용자 측 코드가 예상치 못한 방식으로 공격구문이 실행되는 XSS공격입니다.

 

DOM based XSS 공격과정
  1. 먼저 공격자가 공격용 악성 URL을 생성하고 사용자에게 노출시킵니다.
  2. 그 후 악의적인 스크립트가 포함된 URL을 사용자가 요청하게 되어 브라우저를 해석하는 단계에 공격이 발생하는 것입니다

 

  • 악의적인 스크립트로 인해서 클라이언트 측 코드가 원래의도와는 다르게 실행되는 것입니다.
  • DOM기반 xss는 서버와 관계없이 브라우저에서 발생하는 것이라는 차이점이 있습니다.

 

 

 

 

 

 

 

 

 

XSS 공격에 대한 대응 방안

 

입력 값 검증 

XSS 공격은 사용자가 입력한 값에 대한 검증과 사용자가 입력한 값을 그대로 출력할 때 검증이 제대로 이루어지지 않아 발생하는 취약점이다.

그러므로 데이터가 입력되기 전이나 입력된 데이터를 서버에 전달하기 전에 프론트에서 검증하는 것이 좋다.

 

    -검증 방법-

    ①입력 데이터의 길이 제한하기
    ②지정된 문자 또는 형식으로 입력되었는지 확인
    ③정해진 규칙을 벗어난 입력값들은 무효화 시키기

 

출력 값 검증

가장 유명한 예시로는 게시판 상세 페이지가 있다.

게시판에 올라온 글을 클릭하면, 해당 글의 상세 내용을 조회하는 api 호출한다.

이 때, 상세 내용에 HTML 또는 스크립트 구문이 들어가 있다면, 스크립트로 해석될 수 있다. 그래서 스크립트로 해석될 여지가 있는 특수 문자들을 인코딩해서 보여줘야 한다.

 

 

 

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

기본적인 웹 방화벽을 통해 XSS공격을 대비할수 있다. 방화벽은 XSS외에 웹 공격에 대한 대부분을 효과적으로 막아내는 데 도움을 많이 준다.

 

웹 방화벽 사용

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

 

 

 

 

 

<<모의 해킹 실습서버인 DVWA에서 실습을 진행해보실 수 있습니다.>>

Comments