
Flash, PDF 및 Silverlight를 사용하는 콘텐츠 하이재킹 개념 증명
AGPL에 따라 배포됩니다(자세한 내용은 LICENSE 참조).
이 프로젝트는 다음에 대한 개념 증명(PoC)을 제공하는 데 사용할 수 있습니다:
참고: .XAP 파일은 다른 확장자로 이름을 바꿀 수 있지만 더 이상 교차 도메인으로 로드할 수 없습니다. Silverlight는 제공된 URL을 기반으로 파일 확장자를 찾으며 .XAP가 아니면 무시하는 것으로 보입니다. 웹사이트에서 사용자가 실제 파일 이름 뒤에 ";" 또는 "/"를 사용하여 ".XAP" 확장자를 추가할 수 있는 경우에도 여전히 악용될 수 있습니다.
참고: .XAP 파일은 다른 확장자로 이름을 바꿀 수 있지만 더 이상 교차 도메인으로 로드할 수 없습니다. Silverlight는 제공된 URL을 기반으로 파일 확장자를 찾으며 .XAP가 아니면 무시하는 것으로 보입니다. 웹사이트에서 사용자가 실제 파일 이름 뒤에 ";" 또는 "/"를 사용하여 ".XAP" 확장자를 추가할 수 있는 경우에도 여전히 악용될 수 있습니다.
참고: Silverlight가 .XAP 파일을 교차 도메인으로 요청할 때 콘텐츠 유형은 application/x-silverlight-app이어야 합니다.
참고: PDF 파일은 Adobe Reader 뷰어에서만 사용할 수 있습니다(Chrome 및 Firefox 기본 PDF 뷰어에서는 작동하지 않습니다).
참고: 공개적으로 접근 가능한 정적 콘텐츠나 데이터를 읽는 것은 문제로 간주할 수 없습니다. 권고문에서 오탐(false-positive) 결과를 제거하는 것이 중요합니다. "Access-Control-Allow-Origin" 헤더에 별표("*") 문자만 사용하는 것은 문제가 아닙니다.
Usage Example:
업로드가 허용되는 파일 유형은 업무 기능에 필요한 파일 유형으로만 제한해야 합니다.
애플리케이션은 서버에 업로드되는 모든 파일에 대해 필터링 및 콘텐츠 검사를 수행해야 합니다. 파일은 다른 사용자에게 제공되기 전에 철저히 검사하고 검증해야 합니다. 의심스러운 경우 파일을 폐기해야 합니다.
정적 파일의 응답에 "Content-Disposition: Attachment" 및 "X-Content-Type-Options: nosniff" 헤더를 추가하면 Flash 또는 PDF 기반 크로스 사이트 콘텐츠 하이재킹 공격으로부터 웹사이트를 보호할 수 있습니다. 파일 다운로드를 처리하는 모든 모듈에서 사용자가 다운로드해야 하는 모든 파일에 대해 이 방법을 적용하는 것이 좋습니다. 이 방법은 Silverlight 또는 유사한 객체를 사용한 공격으로부터 웹사이트를 완전히 보호하지는 못하지만, 특히 PDF 파일 업로드가 허용되는 경우 Adobe Flash 및 PDF 객체 사용의 위험을 완화할 수 있습니다.
Flash/PDF(crossdomain.xml) 또는 Silverlight(clientaccesspolicy.xml) 교차 도메인 정책 파일은 사용되지 않고 Flash 또는 Silverlight 애플리케이션이 웹사이트와 통신할 업무상 요구 사항이 없는 경우 제거해야 합니다.
교차 도메인 액세스는 신뢰할 수 있고 액세스가 필요한 최소한의 도메인 집합으로 제한해야 합니다. 특히 "uri" 속성 값에 와일드카드 문자가 사용되는 경우 액세스 정책은 취약하거나 안전하지 않은 것으로 간주됩니다.
Silverlight 애플리케이션에 사용되는 모든 "crossdomain.xml" 파일은 도메인 속성에 와일드카드("*") 문자만 허용할 수 있으므로 취약한 것으로 간주해야 합니다.
corssdomain.xml 및 clientaccesspolicy.xml 파일에 대해 브라우저 캐싱을 비활성화해야 합니다. 이렇게 하면 웹사이트가 파일을 쉽게 업데이트하거나 필요 시 웹 서비스에 대한 액세스를 제한할 수 있습니다. 클라이언트 액세스 정책 파일을 확인하면 브라우저 세션 동안 계속 적용되므로 캐싱을 사용하지 않는 것이 최종 사용자에게 미치는 영향은 최소화됩니다. 이는 대상 웹사이트의 콘텐츠와 정책 파일의 보안 및 복잡성에 따라 낮음 또는 정보성 위험 문제로 제기될 수 있습니다.
CORS 헤더는 정적 또는 공개적으로 접근 가능한 데이터에 대해서만 활성화되도록 검토해야 합니다. 그렇지 않은 경우 "Access-Control-Allow-Origin" 헤더에는 승인된 주소만 포함되어야 합니다. "Access-Control-Allow-Credentials"와 같은 다른 CORS 헤더는 필요한 경우에만 사용해야 합니다. "Access-Control-Allow-Methods" 또는 "Access-Control-Allow-Headers"와 같은 CORS 헤더 내의 항목은 검토하고 필요하지 않은 경우 제거해야 합니다.
참고: "Referer" 헤더를 사용하는 것은 해결책이 될 수 없습니다. 예를 들어 Adobe Reader와 PDF를 사용하여 POST 요청을 보내 이 헤더를 설정할 수 있기 때문입니다("objects" 디렉터리의 "xfa-manual-ContentHijacking.pdf" 파일 참조). 업데이트: "referer" 헤더 설정은 Adobe에서 해결되었습니다. 물론 우회 방법도 찾지 못한 경우에 한합니다 ;)
최신 업데이트/도움말은 프로젝트 페이지를 참조하세요: https://github.com/nccgroup/CrossSiteContentHijacking
NCC Group의 Soroush Dalili (@irsdl)
JPG 파일을 업로드하는 것만으로도 교차 도메인 데이터 하이재킹(클라이언트 측 공격)이 발생할 수 있습니다! https://soroush.secproject.com/blog/2014/05/even-uploading-a-jpg-file-can-lead-to-cross-domain-data-hijacking-client-side-attack/
다중 PDF 취약점 - 스테로이드를 맞은 텍스트와 그림 http://insert-script.blogspot.co.at/2014/12/multiple-pdf-vulnerabilites-text-and.html
Silverlight의 HTTP 통신 및 보안 http://msdn.microsoft.com/en-gb/library/cc838250(v=vs.95).aspx
Silverlight용 교차 도메인 및 클라이언트 액세스 정책 파일 설명 http://www.devtoolshed.com/explanation-cross-domain-and-client-access-policy-files-silverlight
교차 도메인 정책 파일 사양 http://www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
HTTP 스트리밍을 위한 crossdomain.xml 파일 설정 http://www.adobe.com/devnet/adobe-media-server/articles/cross-domain-xml-for-streaming.html
google.com에서 CVE-2011-2461 악용 http://blog.mindedsecurity.com/2015/03/exploiting-cve-2011-2461-on-googlecom.html