본문 바로가기
Web/Webhacking

크로스사이트 스크립팅(XSS)

by jjudy 2022. 4. 19.

크로스사이트 스크립팅(XSS) 취약점?

  • 검증되지 않은 입력값으로 인해 사용자의 웹 브라우저에 의도하지 않은 악성 스크립트가 실행되는 취약점
  • 브라우저로 전달되는 데이터에 악성 스크립트가 포함되어 사용자의 브라우저에서 실행되며 해킹
  • 사용자의 정보(세션, 쿠키 등)가 탈취, 악성코드 감염 등이 발생할 수 있는 위험이 있음
  • Stored XSS, Reflected XSS, DOM XSS  공격 방식이 있음

 

 

1. Stored(저장형) XSS

   *   공격자가 게시판이나 방명록 등에 악의적인 스크립트 삽입 후 사용자가 해당 게시글 클릭 시 저장되어 있던 스크립트가 실행되는 공격

   *   악성 스크립트가 공격 대상의 DB 등에 보존(지속적)

   *   게시판이나 방명록, 회원 정보 같은 사용자 입력값을 저장하거나 열람할 수 있는 곳에서 발생

   *   사용자가 악성 스크립트가 담긴 게시판의 글을 볼 때마다, 스크립트 실행됨

   *   세션, 쿠키, 아이디, 비밀번호 같은 정보를 탈취할 수 있음

 

 

 

1 - 1.  점검 방법

*   사용자 입력 폼 식별하기(사용자/프로필 페이지, 장바구니, 파일 관리자, 애플리케이션 기본 설정, 게시판 등)

 

*   HTML 코드 분석

<input class=“box” type=“text” name=“email” size=“40” value=“123@123.com” />

 

>> 악성 스크립트 주입(URL 인코딩)             

       123@123.com%22%3E%3Cscript%3Ealert(document.cookie)%3C%2Fscript%3E 

 

>> 주입 후 HTML 코드

<input class=“box” type=“text” name=“email” value=“123@123.com”><script>alert(document.cookie)</script>

입력이 저장되고 페이지를 다시 로드할 때 브라우저에서 xss 페이로드가 실행되면서 위의 삽입에 의해 쿠키 값을 포함하는 팝업 창을 생성한다.

 

 

 

2. Reflected(반사형) XSS

   *   URL에 악의적인 스크립트 삽입 후 요청 시 스크립트가 서버로부터 그대로 반사되어 브라우저에서 스크립트가 실행되는 공격

   *   검색 결과, 에러 메시지 등 서버가 외부에서 입력받은 값을 받아 브라우저에게 응답할 때 발생(비영구적)

   *   응답하는 과정에서 위험한 문자를 사용자에게 그대로 돌려주면서 발생

   *   개인정보(세션, 쿠키) 탈취, 페이지 콘텐츠(다운로드 링크 등) 변경할 수 있음

   *   공격자가 의도한 사이트로 리다이렉트할 수 있음

 

 

 

2 - 1. 점검 방법

* 예)  입력값에 따라 Welcom %username% 문구가 뜨는 사이트 에서, 사용자 변수를 사용해 취약점 점검

>>  주소에 스크립트 삽입

       http://example.com/index.php?user=<script>alert(123)</script>

 

*  다운로드 링크가 있는 사이트에서, 악성 스크립트 삽입

>>  주소에 악성 스크립트 삽입 후 사용자가 링크 클릭 시,  악성 파일을 다운로드 하게 됨

 

 

 

3. DOM XSS

   *  DOM 환경에서 악의적인 수정으로 인해 클라이언트 측 코드가 예상치 못한 방식으로 공격 구문이 실행되는 공격으로 서버와 관계없이 브라우저에서 발생하는 공격

   *  DOM은 HTML 및 XML 문서에 접근하는 방법을 표준으로 정의하는 문서 객체 모델

   *  서버와 관계없이 브라우저에서 발생

   *  피해자의 브라우저에 악성 코드 주입 및 실행 가능, 인증 정보(쿠키 등) 탈취 가능

 

댓글