IT에서 살아남기

XSS(Cross-Site Scripting) 본문

IT/정보

XSS(Cross-Site Scripting)

게으른 CPU 2022. 12. 16. 20:42

 

 


XSS(Cross-Site Scripting)?

 

 

'Cross-site scripting'을 직역하면 '사이트 간 스크립팅'으로 공격자가 피해자 웹 애플리케이션에 스크립트 코드를 삽입하여 사용자의 정보를 탈취하거나 개발자가 의도하지 않는 비정삭적인 기능을 수행한다. 

 

추가적으로 'Cross-site scripting'을 CSS로 줄여 사용하지않는 이유는 CSS(Cascading Style Sheets)라고 웹 기술이 먼저 사용하고 있기 때문이다.

 


XSS 종류

 

- Reflected XSS(반사형 XSS)

- Stored XSS(영구적 XSS)

- DOM XSS

 


1. Reflected XSS(반사형 XSS)

 

공격자가 검색와 같이 서버에서 입력 값에 대한 응답을 하는 곳에 스크립트 공격 코드를 삽입 후 다른 사용자에게 전달하여 공격을 실행한다.

 

 

공격 예시

 

1. 공격자가 악의적인 스크립트 코드가 포함된 URL을 피해자에 전달

 

2. 전달 받은 피해자는 URL 접속하여 악의적인 스크립트 실행

 

3. 서버에서 요청받은 내용에 맞게 응답

 


2. Stored XSS(영구적 XSS)

 

공격자가 게시글와 같이 데이터를 저장할 수 있는  곳에 스크립트 공격 코드를 삽입 후 저장하면 서버에 스크립트 코드가 저장되어 사용자가 웹 서비스 사용시 공격자의 스크립트 코드가 실행된다.

 

 

 

공격 예시

 

1. 공격자가 악의적인 스크립트 코드가 포함된 게시글 작성하여 서버에 전달

 

2. 해당 게시글을 피해자에게 전달

 

3. 전달받은 피해자는 게시글을 조회하여 스크립트가 실행되어 서버에 요청

 

4. 요청받은 서버는 악의적인 스크립트 코드에 맞게 응답

 


3. DOM XSS

 

Document Object Model로 웹 페이지에 대한 인터페이스이며, 페이지의 콘텐츠 및 구조, 스타일을 읽고 조작할 수 있도록 API를 제공한다. DOM 기반 XSS는 Stored XSS, Reflected XSS와 서버에서 응답 혹은 저장하는 것이 아닌 브라우저 HTML 페이지 구문을 분석할 때 실행이 된다. 

 

 

공격 예시

 

1. 공격자는 악의적인 스크립트 코드가 포함된 HTML 페이지 URL을 피해자에게 전달

 

2. 전달받은 피해자는 해당 페이지 URL 접속 후 서버로 부터 HTML 문서를 전달받음

 

3. 전달 받은 HTML 문서를 읽으면서 필요한 스크립트 실행 중 포함된 악의적인 스크립트 코드가 실행

 


예방법

 

- 입력 값에 대한 검증

> 사용자의 입력 값 정보를 서버 측에서 특수문자 필터링하여 개발자가 의도한 값이 들어가도록 한다.

 

- XSS 방어 라이브러리 사용

> Anti-XSS Library와 같은 라이브러리를 사용하여 XSS 공격을 차단한다.

 

- 웹 방화벽 사용

> 웹서버 앞에 위치하여 외부로부터 들어오는 트래픽을 감시하여 악의적인 공격을 방화벽에서 차단

 

'IT > 정보' 카테고리의 다른 글

Path/Directory Traversal  (0) 2022.12.18
File Upload Vulnerability  (0) 2022.12.17
SQL Injection  (0) 2022.12.16
OWSAP Top 10 - 2021  (0) 2022.12.15
Snort Rule Option  (0) 2022.12.13