Stored XSS

DATE : 2023/12/21

앞선 POST XSS : Cross Site Scripting에서 XSS가 무엇인지,

어떤 조건을 확인해봐야 하는 지 알아보았으니

이번엔 XSS 공격을 어떻게 수행할 수 있는 지, 그 방법에 대해 알아볼 것이다.

HOW?

XSS는 (1)데이터를 서버에 저장하고 있다가 (2)사용자의 응답 속에 출력 됨으로써

이루어지는 공격이라 정리했다.

그렇다면 어찌 됐든 스크립트를 삽입할 줄 알아야 그 다음 무슨 일이 벌어지든 할 것이다.

그렇기 때문에 이번 POST에서는 스크립트를 삽입하는 방법, 그 유형에 대해 알아보려고 한다.

Stored XSS

XSS 공격을 수행하기 위한 스크립트 삽입, 첫 번째는 Stored XSS이다.

Stored라는 단어 그대로 페이지에 접속하는 이용자에게 스크립트가 전달되도록

스크립트를 서버에 저장해두는 방식이다.

Stored XSS를 수행하기 위해서는 당연히, 데이터를 저장하는 포인트에서 스크립트를 삽입해야 하는데

그렇다면 이런 의문이 들 수 있다.

"데이터를 저장하는 곳이라면 어디든 Stored XSS를 수행할 수 있는 건가?"

정답은 NO!

데이터를 저장해두는 것에 더불어 그 데이터가 출력 되어야 한다. 이때 "데이터가 출력"된다는 의미는

화면 상에 "너가 작성한 스크립트 이거임" 하고 문자 그대-로 보여준다는 게 아니라

Response 상에 저장되어 있던 스크립트가 들어있어야 한다는 의미이다.

XSS는 결과적으로 공격자가 원하는 스크립트가 실행되어야 하기 때문에

Script가 아닌 String으로 전달되는 건 의미가 없다.

따라서! Stored XSS를 수행하기 위한 과정에서는

(1) 작성한 데이터가 응답 되는 지 확인한 후

(2) 특수 문자(<, ', ", >) 사용 여부를 파악해야 한다. (스크립트 작성해야 하니까!)

(3) 1 & 2번 거친 후에는? 스크립트를 삽입하면 된다!

Last updated