외로운 Nova의 작업실

dreamhack 웹해킹 - 2(SOP) 본문

Web Penetesting/Web Vulnerability

dreamhack 웹해킹 - 2(SOP)

Nova_ 2022. 11. 28. 15:46

- SOP

SOP(동일 출처 정책, same-origin policy)란 한 호스트에서 실행되는 자바스크립트는 동일한 출처의 정보만을 얻을 수 있는 정책을 말합니다. 예를 들어 https://lonelynova.tistory.com/manage/newpost:80에서   실행되는 자바스크립트는 https://lonelynova.tistory.com 출처의 정보만 얻을 수 있습니다. 대부분의 브라우저는 SOP정책이 적용되어 있습니다.

 

<출처(Origin)>

출처는 프로토콜, 호스트, 포트로 구성됩니다. 구성 요소가 모두 일치해야지만 동일한 출처라고 합니다. 예를 들어 https://lonelynova.tistory.com/manage/newpost:80 에서는 https가 프로토콜, lonelynova.tistory.com이 호스트 80이 포트가 됩니다. 

 

<SOP 위반 사례>

만약 https://lonelynova.tistory.com/manage/newpost:80 페이지 자바스크립트가 https://www.naver.com 의 cookie 정보를 요청하면 이는 요청한 쪽의 출처와 요청 받은 쪽의 출처가 다르기때문에 SOP가 위반되어 브라우저내에서 차단되게 됩니다.

 

<SOP 위반사례 실습>

1. 저의 티스토리 홈페이지에서 개발자 도구 - console을 띄워주겠습니다.

2. 저의 티스토리 홈페이지에서 자바스크립트를 실행하여 새로운 창으로 naver를 띄워주겠습니다.

3. 이제 저의 홈페이지에서 naver를 띄운 otherNewWindow 객체를이용해 naver에 있는 쿠키값을 요청해보겠습니다.

VM436:1 Uncaught DOMException: Blocked a frame with origin "https://lonelynova.tistory.com" from accessing a cross-origin frame.
    at <anonymous>:1:28

위와 같이 오류가 뜨면서 실행되지 않는 것으로 보아 SOP 정책이 적용된 것을 확인할 수 있습니다. 

 

<SOP 승인사례 실습>

1. 저의 티스토리 홈페이지에서 개발자 도구 - console을 띄워주겠습니다.

2. 저의 티스토리 홈페이지에서 자바스크립트를 실행하여 새로운 창으로 첫번째 포스팅인 https://lonelynova.tistory.com/122 경로를 새로운 윈도우로 띄워주겠습니다.

3. 이제 저의 홈페이지에서 /122를 띄운 sameNewWindow 객체를이용해 122경로에 있는 쿠키값을 요청해보겠습니다.

너무 잘 실행되어 중요한 정보이므로 가렸습니다.

Comments