XSS 

사진 출처 : https://portswigger.net/web-security/cross-site-scripting


 

XSS(Cross-Site Scripting)란

 XSS 공격은 웹 애플리케이션에 존재하는 취약점을 기반으로 웹 서버와 클라이언트간 통신 방식인 HTTP 프로토콜 

동작 과정에서 발생한다. XSS 공격은 웹 사이트의 관리자가 아닌 공격자가 악성 스크립트를 웹 서버의 취약점을

통해 웹 사이트에 삽입을 하고, 이러한 악성 스크립트가 포함된 데이터가 개인 브라우저에서 실행되면서 해킹을

하는 것 이다. 공격은 주로 Javascript를 통해 이루어지고 웹 사이트의 게시판이나 웹 이메일 에도 악성 스크립트를

심어 공격을 한다.

 

 

XSS 공격 종류

저장 XSS 공격

 

취약점이 있는 웹 서버에 악성 스크립트를 저장해 놓는 방법. 공격자가 웹 사이트의 게시판이나 여러 곳에 악성

스크립트를 삽입을 해놓은 상태에서 사용자가 웹 사이트 해당 페이지의 정보를 요청하게 되면 서버가 악성 스크립트를

사용자에게 전달하여 공격을 당한다.

 

 

<script>alert(document.cookie)</script>

 

텍스트만 표시되도록 한 게시판의 HTML 문서에 접근하여 <script> 태그를 이용해 악성 스크립트를 저장하는 대표적인 방식. 위의 코드가 포함된 게시판에서는 태그가 나타나지 않으며 사용자는 확인할 수 없다. 

 


반사 XSS 공격

 

애플리케이션이 HTTP 요청으로 데이터를 수신 할 때 발생한다. 공격자가 웹 사이트에서 XSS 취약점을 발견하고, 악성 URL을 생성한다. 이렇게 공격자가 구성한 URL로 사용자가 접근을 하게 되면 해당 사용자의 웹 사이트에 등록된 정보 등이 공격자에게 전송이 된다. 

 

https://test-secure.com/status?message=gingerkang

<p>Status: gingerkang</p>

 

이러한 URL이 있다고 하면, 공격자는 다음과 같이 악성 URL로 변환하여 구성한다.

 

https://test-secure.com/status?message=<script>/*악성 스크립트*/</script>

<p>Status: <script>/*악성스크립트*/</script></p>

 


DOM 기반 XSS 공격

 

웹 애플리케이션이 신뢰하지 않는 데이터를 수행하는 클라이언트 측 Javascript를 포함할 때 발생한다.

사용자의 브라우저가 HTML 페이지를 분석할 때마다 공격 스크립트가 DOM 생성의 일부로 실행되면서 공격.

페이지는 변하지 않고 페이지에 포함되어 있는 브라우저 측 코드가 DOM 환경에서 악성코드로 실행된다.

이 공격은 주로 DOM으로 데이터를 다시 보낼 때 발생한다. 

 

var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;

 

위와 같이 입력 필드에서 값을 읽고 해당 값을 HTML내의 요소에 쓰는 Javascript 코드가 있다고 하자.

 

You searched for: <img src=1 onerror='/*악성 스크립트*/'>

 

공격자는 위와 같이 자신의 악성 스크립트를 실행시키는 값을 구성할 수 있다.

일반적인 경우 입력 필드는 HTTP Request 부분에서 채워져 반사 XSS 공격과 같은 방식으로

악성 URL을 통한 공격이 될 수 있다.

 

 

 

 


생강강

,