본문 바로가기

개념정리/Web Hacking

[Web Hacking] Cross Site Scripting : XSS

1. XSS

XSS는 공격자가 웹 리소스에 악성 스크립트를 삽입해 이용자의 웹 브라우저에서 해당 스크립트를 실행할 수 있다. 공격자는 해당 취약점을 통해 특정 계정의 세션 정보를 탈취하고 해당 계정으로 임의의 기능을 수행할 수 있다. XSS 공격은 OWASP Top 10에 포함되어 있다.

XSS는 SOP 보안 정책이 등장하면서 서로 다른 오리진에서는 정보를 읽는 행위가 이전에 비해 힘들어졌다. 그러나 이를 우회하는 다양한 기술이 나오면서 XSS 공격이 지속되고 있다. 

 

2. XSS 종류

1) Stored XSS

  • XSS에 사용되는 악성 스크립트가 서버에 저장되고 서버의 응답에 담겨오는 XSS
  • 서버의 데이터베이스 또는 파일 등의 형태로 저장된 악성 스크립트를 조회할 때 발생
  • 사이트 게시판이나 댓글, 닉네임 등 스크립트가 서버에 저장되어 실행되는 방식

2) Reflected XSS

  • XSS에 사용되는 악성 스크립트가 URL에 삽입되고 서버의 응답에 담겨오는 XSS
  • URL 파라미터(GET 방식)에 스크립트를 넣어 서버에 저장하지 않고 즉시 스크립트를 만드는 방식
  • 게시판 서비스에서 작성된 게시물을 조회하기 위한 검색창에서 스크립트를 포함해 검색하는 방식
  • 공격을 위해서는 이용자에게 악성 스크립트가 포함된 링크를 직접 전달하기 보다는 Click jacking 또는 Open Redirect 등 다른 취약점과 연계하여 사용한다.

3) DOM-based XSS

  • XSS에 사용되는 악성 스크립트가 URL Fragment에 삽입되는 XSS

4) Universal XSS

  • 클라이언트의 브라우저 혹은 브라우저의 플러그인에서 발생하는 취약점으로 SOP 정책을 우회하는 XSS

 

3. XSS 위험성

1) 쿠키 정보 및 세션 탈취

XSS 공격을 통해 세션 ID를 획득해 공격자가 정상 사용자인 척 가장할 수 있다.

2) 시스템 관리자 권한 획득

XSS 취약점 있는 웹 서버에 다양한 악성 데이터를 포함시켜 사용자의 브라우저가 악성 데이터를 실행하는 경우 자신의 브라우저에 있는 취약점을 공격하는 공격 코드가 실행되면서 사용자 시스템을 완전히 통제할 수 있다.

3) 악성코드 다운로드

악성 스크립트 자체만으로 악성 프로그램을 다운로드 할 수 없지만, 사용자가 악성 스크립트가 있는 URL을 클릭하도록 유도하여 리다이렉트하거나, 트로이목마 프로그램을 다운로드하여 설치할 수 있다.

4) 거짓 페이지 노출

<script> 태그 뿐만 아니라 <img>와 같은 그림을 표시하는 태그를 사용해 원래 페이지와는 다른 페이지를 표시하거나 원래 페이지의 일부를 변조해 거짓 페이지를 노출할 수 있어 이를 이용하여 개인정보 유출 등을 할 수 있다.

 

4. XSS 대응 방안

XSS 취약점을 근본적으로 제거하기 위해 스크립트 등 해킹에 사용될 수 있는 입력 및 출력 값에 대해서 검증하고 무효화시켜야 한다. 입력 값에 대한 유효성 검사는 데이터가 입력되기 전에 가능하면, 입력 데이터에 대한 길이, 문자, 형식 및 사업적 규칙 유효성을 검사해야 한다.

1) 입력 값 제한

사용자의 입력값을 제한하여 스크립트를 삽입하지 못하도록 한다. 파라미터 값을 숫자만 허용한다면 그외 입력값은 출력되지 않는다.

2) 입력 값 치환

XSS 공격은 <script> 태그를 사용하기 때문에 XSS 공격을 차단하기 위해 태그 문자 등 위험한 문자 입력시 문자 참조(HTML entity)로 필터링하고, 서버에서 브라우저로 전송 시 문자를 인코딩하는 것이다. 예를 들어, 문자 "<"는 동일한 의미의 "&lt"로 변경한다. HTML entity는 대부분의 인터프리터에서 특수한 의미를 가지지 않으며, 단순한 문자로 처리된다. 그러므로 브라우저는 일반 문자로 인식하고 실행되지 않는다.

3) 스크립트 영역에 출력 자제

이벤트 핸들러 영역에 스크립트가 삽입되는 경우 보호기법들을 우회할 수 있기 때문에 사용자의 입력을 출력하는 것을 최대한 자제해야 하며 필요한 경우 대응방안과 함께 사용해야 한다.

4) PLURA V5 XSS 필터 사용

PLURA V5 XSS 필터를 등록하면 XSS 공격 발생 시 해당 공격자의 IP를 신속히 차단한다.

 

'개념정리 > Web Hacking' 카테고리의 다른 글

4. Cookie & Session  (0) 2022.08.02
3. Web Browser  (0) 2022.08.02
2. Web  (0) 2022.08.01
1. HTTP/HTTPS  (0) 2022.08.01