Cookie Tossing
설명
공격자가 회사의 서브도메인 또는 도메인을 제어하거나 서브도메인에서 XSS를 찾을 수 있다면 이 공격을 수행할 수 있습니다.
쿠키 해킹 섹션에서 언급된 바와 같이 쿠키가 도메인에 설정되면(지정됨) 해당 도메인 및 서브도메인에서 사용됩니다.
따라서, 공격자는 도메인 및 서브도메인에 특정 쿠키를 설정할 수 있게 될 것이며 다음과 같이 수행할 수 있습니다. document.cookie="session=1234; Path=/app/login; domain=.example.com"
이는 공격자가 다음을 수행할 수 있기 때문에 위험할 수 있습니다:
피해자의 쿠키를 공격자의 계정으로 고정시키므로 사용자가 인지하지 못하면 공격자의 계정에서 작업을 수행하게 되며 공격자는 흥미로운 정보를 얻을 수 있습니다(플랫폼에서 사용자의 검색 기록을 확인하거나 피해자가 계정에 신용 카드를 설정할 수 있음을 확인...)
로그인 후 쿠키가 변경되지 않는 경우, 공격자는 단순히 **쿠키를 고정화(session-fixation)**하여 피해자가 로그인하고 나서 해당 쿠키를 사용하여 피해자로 로그인할 수 있습니다.
때로는 세션 쿠키가 변경되더라도, 공격자는 이전 쿠키를 사용하고 새로운 쿠키도 받을 수 있습니다.
쿠키가 초기 값을 설정하는 경우(예: flask에서 쿠키가 세션의 CSRF 토큰을 설정할 수 있고 이 값은 피해자가 로그인한 후에도 유지될 수 있음), 공격자는 이 알려진 값을 설정하고 그것을 악용할 수 있습니다(이 시나리오에서 공격자는 사용자로 하여금 CSRF 요청을 수행하도록 만들 수 있습니다.).
값 설정과 마찬가지로, 공격자는 서버에서 생성된 인증되지 않은 쿠키를 가져와서 그것에서 CSRF 토큰을 얻고 사용할 수 있습니다.
쿠키 순서
브라우저가 동일한 이름의 두 개의 쿠키를 받을 때 동일한 범위(도메인, 서브도메인 및 경로를 부분적으로 영향)에 영향을 미치는 경우, 브라우저는 두 쿠키의 값을 모두 요청에 보냅니다.
가장 구체적인 경로를 가진 쪽 또는 가장 오래된 쪽에 따라, 브라우저는 먼저 쿠키의 값을 설정한 다음 다른 쪽의 값을 설정합니다. Cookie: iduser=MoreSpecificAndOldestCookie; iduser=LessSpecific;
대부분의 웹사이트는 첫 번째 값만 사용합니다. 따라서, 공격자가 쿠키를 설정하려면 다른 쿠키가 설정되기 전에 설정하거나 더 구체적인 경로로 설정하는 것이 좋습니다.
또한, 보다 구체적인 경로에 쿠키를 설정하는 능력은 매우 흥미로울 수 있습니다. 이를 통해 악성 쿠키가 설정된 특정 경로를 제외한 곳에서 피해자가 자신의 쿠키로 작업하도록 만들 수 있습니다.
보호 우회
이 공격에 대한 가능한 보호는 웹 서버가 동일한 이름의 두 개의 쿠키를 다른 값으로 수락하지 않도록 하는 것일 수 있습니다.
피해자에게 이미 쿠키가 제공된 후 공격자가 쿠키를 설정하는 시나리오를 우회하기 위해, 공격자는 **쿠키 오버플로우를 유발한 다음, 한 번 합법적인 쿠키가 삭제되면 악성 쿠키를 설정할 수 있습니다.
pageCookie Jar Overflow또 다른 유용한 우회 방법은 쿠키 이름을 URL 인코딩하는 것일 수 있습니다. 일부 보호 기능은 요청에서 동일한 이름의 2개의 쿠키를 확인하고 서버가 쿠키의 이름을 디코딩할 수 있습니다.
쿠키 폭탄
쿠키 토싱 공격은 쿠키 폭탄 공격을 수행하는 데도 사용될 수 있습니다:
pageCookie Bomb방어수단
쿠키 이름에 접두사 __Host
사용
__Host
사용쿠키 이름에 이 접두사가 있는 경우, 안전한 원본에서 보내진 Secure로 표시된 쿠키만 /로 설정된 경로 속성이 포함되지 않은 도메인 속성이 포함되지 않은 경우 Set-Cookie 지시문에서만 수락됩니다.
이는 서브도메인이 쿠키를 최상위 도메인으로 강제하는 것을 방지합니다.
참고 자료
Last updated