지난 웹 방화벽 우회 블로깅때 어떤분이 웹 보안 정책의 CSP/SOP에 대해 블로깅을 해달라하셔서 ^^;;
이번 시간은 웹 보안 정책중 하나인 SOP에 대해 그리고 SOP를 우회하는 DNS Rebinding Attack에 대해 알아보도록
하겠습니다~ㅎㅎ.. 저도 이부분은 깊게 공부하진 않아 혹시나 잘못된 내용이 있으면 답글 부탁 드립니다 ^*^
목차
1. Same-Origin-Policy이란??
2. Same-Origin-Policy 쓰는 이유
3. DNS Rebinding Attack
1. 동일-출처 정책(same-origin policy)
출처(origin)에서 로드된 문서나 스크립트가 다른 출처 자원과 상호작용하지 못하도록 제약하는 정책이다.
여기에서 같은 출처의 기준은,
두 페이지의 프로토콜, 포트, 호스트가 같으면 동일출처로 간주한다.
이게 무슨 얘기인가 하면
웹보안 정책에서 Origin(출처)는 scheme,host,port로 구성이 되어있다.
Scheme은 http://나 https://나 ftp://와 같은 URI의 맨 앞에 붙는 문자열을 의미하는데.
이는 클라이언트에서 이를 처리하는 방식을 지정해준다.
Host는 도메인을 의미하는데 "www.naver.com"이런거.
이 뒤에 붙는 /index.html과 같은 PATH는 Host에 포함되지 않습니다.
Port는 말 그대로 포트입니다. 도메인은 IP와 대응되고, 이 뒤에 포트를 지정해 줄 수 있다.
"www.tistory.com:8081"과 같이 도메인 뒤에 붙여 접속할 포트번호를 지정할 수 있다.
ex) 아래 사진을 보면 이해가 될 것이다
만약 같은 Origin이 아닌데 a라는 사이트에서 b라는 사이트로 요청을 보내면 브라우저에서 응답을 할 수 없도록 막는 원리이다.
이런식으로 위와 같은 에러메시지를 출력한다. 즉 출처가 다른 상태에서 요청을 하게되면 응답을 안해준다고 생각하면ㄷ된다.
2. SOP을 사용하는 이유.
그럼 도대체 왜?? 이 Same-Origin-Policy 정책을 사용하는 이유는 무엇일까?
바로 XSS/CSRF 공격을 막기위해 사용하는 것이다.
XSS/CSRF공격을 시도할 시 CSP(Content Security Policy)와 SOP(Same-Origin-Policy) 이 두 정책을 마주치게 되는데
이 두 정책이 XSS/CSRF를 막아주는 역할을 한다.
3. DNS Rebinding Attack.
DNS Rebinding Attack
악의적인 사이트의 도메인에 할당된 IP를 잠재적인 희생자가 사이트에 들어와있는 동안 공격하고자 하는 사이트의 IP로 바꾸어 Same Origin Policy를 우회하는 기법이다.
한마디로 SOP 보안정책을 우회 할 수 있는 방법이 DNS Rebinding Attack라는 공격인데
공격자가 만든 웹페이지에 접속 시 SOP 보안정책 때문에 XMLHttpRequest를 통해 사용자의 localhost 또는 다른 주소로 HTTP Request를 전송할 수 없게된다. But 이 공격을 이용하여 SOP 보안정책을 우회하여 HTTP Request를 전송 할 수 있게 된다.
실제로 Defcon CTF 2019 Quals의 ooops문제에서 DNS Rebinding Attack을 이용하여 SOP 보안정책을 우회하는
문제가 나왔다고 한다. 뭐.... 풀어보진 못했지만 ㅎ..
DNS Rebinding Attack 동작과정
1. 희생자가 공격자가 만든 악성웹사이트로 접속.
2. 웹사이트 접속 시 해당 도메인 주소를 알기위해 DNS 쿼리를 통해 주소를 요청
3. 공격자의 서버 주소에 대한 DNS응답을 보낼 때 TTL의 값을 짧게 설정 후 보낸다.
TTL(컴퓨터, 네트워크에서 데이터의 유효기간을 나타내기위한 방법)
4.공격자가 만든 악성 웹사이트 접속에 성공하고 TTL에 설정된 시간이 지나면 DNS 캐시에 저장된 정보가 폐기됨. TTL 특성이 그럼
5.DNS 캐시에 저장된 정보가 날아가 희생자는 다시 DNS 요청을 통해 주소를 재요청하게 된다.
6. 이때 정상적인 공격자의 주소가 아닌 다른 주소를 보내게 된다.
7. 희생자는 현재 접속된(공격자 주소가 아닌 방금 요청받은 다른주소) 웹 사이트의 Host가 localhost인 줄 알고 XMLHttpRequest를 통해 localhost로 HTTP 요청을 보낼 수 있게 된다.
8. 이렇게 HTTP요청을 통해 설정 변경이나 중요정보를 탈취를 할 수있다.
후... 이번 내용을 블로깅하면서 나도 공부가 많이 되었다. 처음에 이게 도대체 무슨 말인지 이해가 되질 않아 계속 찾아보고 무한반복으로 읽다보니 점차 이해가 되었다.
다음 시간에는 CSP(Content Security Policy)라는 보안 정책에 대해 블로깅 하겠습니다~ ^^;;
'웹 보안 정책' 카테고리의 다른 글
CSP(Content-Security Policy) (1) | 2019.12.31 |
---|
댓글