5

CSRF 드림은행 실습에서 질문

게시판에 img태그를 삽입해서 누군가 로드할때 해당 경로로 요청이 보내지는 공격방법이잖아요.

근데, 이게 Stored XSS랑 무슨 차이가 있나요?
아니면, CSRF라는 목적을 위해서 Stored XSS가 수단으로 쓰이는 건가요?

근데 애초에 CSRF는 외부 도메인으로 요청을 보내야 정의에 맞지 않나요?

답변 2개
7

CSRF 와 Stored XSS 의 차이는 취약점 정의라고 생각되네요.

XSS 와 CSRF 정의를 보면 좋을 듯 하네요.

Cross-site scripting (XSS)는 공격자가 사용자(피해자)에게 의도하지 않은 자바스크립트를 실행하는 것 입니다.
Cross-site request forgery (CSRF 가끔 XSRF)는 공격자가 사용자(피해자)에게 의도하지 않은 작업(요청, request)를 수행하도록 유도 하는 겁니다. forgery 는 위조라는 뜻입니다. 즉, 사용자(피해자)가 의도하지 않는 요청을 하게 만드는 것 입니다.

XSS는 악의적인 javascript 를 실행하는게 목적이고 CSRF의 경우 인증된 사용자의 권한을 이용하는게 목적입니다. CSRF을 위해서 XSS가 사용되는 경우도 있지만 꼭 그런건 아닙니다.

XSS
<img src="javascript:XSS code">

CSRF
<img src="https://dreamhack.io/admin/addadmin?email=attacker@iamattacker.evil">

위의 코드를 보면 XSS는 javascript 를 이용해서 어떤 행위를 하게 만들 수 있습니다. CSRF의 경우는 javascript 를 이용하지 않았지만 특정 계정을 관리자로 추가하는 행위를 유도 및 수행을 하도록 하고 있습니다.

CSRF의 경우 주로 javascript를 쓰기 때문에 비슷하게 보여지고 같은게 아닐까라고 생각될 수 있습니다. 개념적으로 보시는게 좋습니다.

영향도(impact) 및 가능성(likelihood) 관점으로 본다면, 영향도는 두 취약점 모두 높을 수 있고, 가능성은 XSS가 CSRF 보다 상대적으로 높을 수 있습니다.

참고:
https://owasp.org/www-community/attacks/xss/
https://owasp.org/www-community/attacks/csrf
https://portswigger.net/web-security/csrf
https://portswigger.net/web-security/csrf/xss-vs-csrf

6

스크립트로 공격한다고 같은 공격처럼 보이실수 있지만 개념적으로 접근하시면 달리보이실겁니다.
개념
XSS 공격대상은 클라이언트
CSRF 공격대상은 서버
참조
XSS 취약점 발생시 사용자(클라이언트)에게 악의적인 행동 파일다운로드 및 광고 띄우기 세션탈취 등등의 공격이 발견된다면
CSRF 취약점 발생시 사용자가 의도하지않은 게시글 작성, 댓글작서어 ,계좌송금 등등(서버에 공격을 해서 발생)의 공격이 발생합니다.