코진남
XSS 공격 본문
XSS 는 자바스크립트 공격이다. 웹 해킹 공격 중 XSS라는 공격 기법이 있다.
Cross Site Scripting의 약자로 CSS라고 하는 것이 맞지만 이미 CSS가 Cascading Style Sheets의 약어로 사용다괴 있어 XSS라고 한다.
XSS는 게시판이나 웹 메일 등에 자바 스크립트와 같은 스크립트 코드를 삽입 해 개발자가 고려하지 않은 기능이 작동하게 하는 치명적일 수 있는 공격이다.
또한 대부분의 웹 해킹 공격 기법과는 다르게 클라이언트 측, 사용자를 대상으로 한 공격이다.
XSS 공격은 크게 Reflected Xss와 Stored XSS 그리고 DOM Based XSS 세 가지로 분류할 수 있다.
Reflected XSS
다음과 같이 ID를 입력하면 "wELCOM ooo !!"을 출력해주는 페이지가 있다고 가정하자.

이 페이지에 간단한 스크립트를 삽입하면 별다른 필터링 없이 실행되는 것을 확인할 수 있다.

공격자는 이러한 취약점이 존재하는 페이지를 미리 탐색한 후; XSS 공격을 위한 스크립트가 포함 된 URL을 공격 대상자에게 노출시키는 방법으로 공격을 수행할 수 있다.
Reflected XSS의 공격 순서는 다음과 같다.

공격자가 미리 XSS 공격에 취약한 웹 사이트를 탐색하고, XSS 공격을 위한 스크립트를 포함한 전체 URL을 사용자에게 노출시킨다.
사용자가 해당 url을 클릭 할 경우, 취약한 웹 사이트의 서버에 스크립트가 포함 된 URL을 통해 Request를 전송하고, 웹 서버ㄴ에서는 해당 스크립트를 포함한 Response를 전송하게 된다.
Stored XSS
Stored XSS는 Reflected XSS완느 달리 웹 사이트의 게시판에 스크립트 삽입하는 공격 방식이다.
공격자는 게시판에 스크립트를 삽입한 후 공격 대상자가 해당 게시글을 클릭하도록 유도한다.

공격자가 미리 XSS 공격에 취약한 웹사이트를 탐색하고 XSS 공격을 위한 스크립트를 포함 한 게시글을 웹 사이트에 업로드한다.
게시글의 URL을 사용자에게 노출하고 사용자가 게시글을 확인함으로써 URL에 대한 요청을 서버에 전송하게 된다.
웹 서버에서 스크립트를 포함한 Response를 전송하여 공격이 수행된다.
xss의 위험성
1. 쿠키 정보 및 세션 ID 획득
공격자는 XSS에 취약한 페이지 및 게싶나에 XSS 공격을 수행함으로써 해당 페이지를 이용하는 사용자의 쿠키 정보나 세션 ID를 획득할 수 있다.
쿠키는 웹 서버가 브라우저에 보내는 4KB 이하의 작은 텍스트 파일로, 사용자가 웹 사이트를 이용하는 동안 사용자 브라우저에 저장하는 파일이다.
주로 사용자의 상태를 기록하기 위해 쿠키에 로그인 및 버튼 클릭 등에 대한 정보를 저장한다.
만약 세션 ID등을 쿠키에 포함하는 경우, XSS 공격을 통해서 페이지 사용자의 세션 ID 획득해 공격자가 불법적으로 정상 사용자인 척 가장할 수 있다.
2. 시스템 관리자 권한 획득
XSS 취약점이 있는 웹 서버에 다양한 악성 데이터를 포함시킨 후, 사용자의 브라우저가 악성 데이터를 실행할 수 있게 한다.
공격자는 아직 패치되지 않은 취약점에 댛나 공격 코드가 실행되도록 해 사용자의 시스템을 통제 할 수 있다.
만약 회사 등 조직의 개인 PC가 해킹될 경우 조직 내부로 악성 코드가 이동 해 내부의 중요 정보가 탈취될 수 있다.
3. 악성코드 다운로드
XSS 공격은 악성 스크립트 자체로 악성 프로그램을 다운로드 할 수는 없다.
하지만, 사용자가 악성 스크립트가 있는 URL을 클릭하도록 유도 해 악성 프로그램을 다운받는 사이트로 리다이렉트(Redirect) 하거나 트로이 목마 프로그램을 다운로드 하도록 유도 할 수 있다.
4.거짓 페이지 노출
XSS 공격에 취약한 페이지일 경우, <script> 태그 뿐만 아니라 <img> 와 같은 그림을 표시하는 태그를 사용 해 원래 페이지와는 전혀 관련이 없는 페이지를 표시할 수 있다.
XSS 방지법
1.SCIPT 문자 필터링
XSS 공격은 입력값에 대한 검증이 재대로 이루어지지 않아 발생하는 취약점이다.
때문에 사용자의 모든 입력값에 대하여 서버측에서 필터링을 해 주어야 한다.
'CS지식' 카테고리의 다른 글
RSA 암호화 (0) | 2021.12.16 |
---|---|
HTTP1.0 RFC (0) | 2021.12.16 |
API란? (0) | 2021.12.16 |
프로토콜 이란? (0) | 2021.12.16 |
RESTful API란? (0) | 2021.12.16 |