SSRF에 관한 게시물에서 XSS와 CSRF에 차이점에 대해서 언급한 적이 있었다. 설명이 다소 불충분했던 것 같아 XSS와 CSRF에 대해 따로 설명하고자 한다.
1. XSS(Cross-Site Scripting)
- XSS(Cross-Site Scripting) : 사이트 간 스크립팅. 웹 애플리케이션에서 많이 나타나는 취약점의 하나로 웹사이트 관리자가 아닌 이가 웹 페이지에 악성 스크립트를 삽입할 수 있는 취약점이다.
XSS는 쉽게 말해 악성 스크립트를 사이트에 주입시켜 사용자(클라이언트)가 사이트에 접근했을 때 해당 스크립트가 사용자 측에서 실행되도록 하는 공격이다. 주로 쿠키 및 세션 탈취, 웹사이트 변조 등을 목적으로 행해진다.
공격 진행 과정은 다음과 같다
- 공격자는 악성스크립트를 주입하기 위해 사이트의 취약점을 찾는다.
- 취약점을 찾아서 사용자 정보(ex.세션쿠키)를 탈취하는 스크립트를 사이트에 삽입한다.
- 사용자가 그 웹사이트에 접근하면 스크립트가 작동합니다
- 스크립트를 통해 침입자에게 사용자 정보(ex.세션쿠키)가 전달된다.
XSS는 세부공격방법에 따라 그 종류가 나뉘는데 Stored XSS, Reflected XSS 두 가지에 대해서 알아보자.
- Stored XSS(저장형 XSS)
가장 일반적인 XSS 공격 유형이다. 앞서 설명한 공격 진행 과정대로 악성 스크립트를 웹 사이트의 방명록이나 게시판에 삽입하고, 다른 사용자들이 그 글을 확인할 때 스크립트 코드가 사용자에게 전달되고 세션 쿠키가 침입자에게 전달되는 방식이다.
스크립트를 웹 서버에 저장하기 때문에 Stored라는 이름이 붙었다.
- Reflected XSS(반사형 XSS)
스크립트를 웹 서버에 저장하는 Stored XSS와 달리 URL 등을 이용해서 변수부분에 스크립트 코드를 입력함과 동시에 바로 결과가 전해지는 공격이다.
클릭 요청이 발생하면 바로 스크립트가 반사되어 돌아온다고 해서 Reflected라는 이름이 붙었디.
2. CSRF(Cross-Site Request Forgery)
사이트간 요청 변조(Cross-Site Request Forgery) 또는 클라이언트 측 요청변조(Client-Side Request Forgery)라고도 한다
Cf> 서버 측 요청 변조(SSRF : Server-Side Request Forgery)와 비교할 때 클라이언트 측 요청변조(Client-Side Request Forgery)라는 표현이 어울린다.
- CSRF(Cross-Site Request Forgery) : 사용자 본인 의지와는 무관하게 공격자가 의도한 행위를 서버에 요청하게 만드는 공격
공격 진행 예시는 다음과 같다
- 공격자는 서버로 넘어가는 자금 전송에 대한 요청을 조작하려고 한다.
- 침입자는 하이퍼링크에 자금 전송 요청에 대한 스크립트를 삽입하고 사이트에 로그인할 사람들에게 전송한다.
- 사용자는 링크를 누르고, 의도치않게 서버로 요청을 보내게 됩니다.
- 서버는 로그인 되어있는 사용자의 요청이기 떄문에 정상으로 인식하고 침입자에게 돈을 전송한다.
사용자(클라이언트) 요청을 변조하는 공격이라서 성공하려면 다음 두 가지 조건이 충족해야 한다,
- 사용자는 로그인 상태여야함. (서버로 부터 인증을 받은 상태)
- 희생자는 공격자가 보낸 링크를 클릭해야 함.
3. XSS vs CSRF
마지막으로 XSS와 CSRF의 차이점에 대해 살펴보자. 얼핏보면 Reflected XSS와 CSRF가 비슷하다고 생각할 수 있으나 다음과 같은 차이점이 있다.
XSS(Cross-Site Scripting)CSRF(Cross-Site Request Forgery)
○ 개요 : 악성 스크립트가 클라이언트에서 실행됨. | ○ 개요 : 클라이언트의 요청이 공격자에 의해 변조되어 서버에 전송 |
○ 공격대상 : 클라이언트(Client) | ○ 공격대상 : 서버(Server) |
○ 클라이언트(Client)가 웹사이트를 신뢰하는 점을 이용 | ○ 서버(Server)가 사용자의 웹브라우저를 신뢰하는 점을 이용 |
'정보보안' 카테고리의 다른 글
운영체제 & 컴퓨터 아키텍쳐 (0) | 2024.11.24 |
---|---|
IPv4, 서브넷팅 ,서브넷마스크 (0) | 2024.10.30 |
쿠키(Cookie) vs 세션(Session) vs 토큰(Token) (0) | 2024.10.30 |
스턱스넷(Stuxnet) (1) | 2024.10.30 |
암호화(Encryption) (0) | 2024.10.30 |