Bypassing SOP with Iframes - 2
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
이 도전 과제의 해결책에서 @Strellic_은 이전 섹션과 유사한 방법을 제안합니다. 확인해 보겠습니다.
이 도전 과제에서 공격자는 우회해야 합니다:
그가 그렇게 한다면, 그는 **innerHTML
**로 페이지에 작성될 HTML 콘텐츠가 포함된 postmessage를 보낼 수 있으며, 이는 위생 처리 없이 (XSS) 이루어집니다.
첫 번째 체크를 우회하는 방법은 **window.calc.contentWindow
**를 **undefined
**로 만들고 **e.source
**를 **null
**로 만드는 것입니다:
**window.calc.contentWindow
**는 실제로 **document.getElementById("calc")
**입니다. **document.getElementById
**를 **<img name=getElementById />
**로 덮어쓸 수 있습니다 (Sanitizer API -여기-는 기본 상태에서 DOM 클러버링 공격으로부터 보호하도록 구성되어 있지 않습니다).
따라서, **document.getElementById("calc")
**를 **<img name=getElementById /><div id=calc></div>
**로 덮어쓸 수 있습니다. 그러면 **window.calc
**는 **undefined
**가 됩니다.
이제 **e.source
**가 undefined
또는 **null
**이 되어야 합니다 (왜냐하면 ==
가 사용되기 때문에 **null == undefined
**는 **True
**입니다). 이를 얻는 것은 "쉬운" 일입니다. iframe을 생성하고 그로부터 postMessage를 보내고 즉시 iframe을 제거하면, **e.origin
**은 **null
**이 될 것입니다. 다음 코드를 확인하세요.
두 번째 체크를 우회하기 위해 **token
**을 값이 null
인 상태로 보내고 window.token
값을 **undefined
**로 만드는 방법은 다음과 같습니다:
값이 null
인 상태로 postMessage에 token
을 보내는 것은 사소한 일입니다.
**window.token
**은 **document.cookie
**를 사용하는 함수 **getCookie
**를 호출할 때 사용됩니다. null
출처 페이지에서 **document.cookie
**에 접근하면 error가 발생한다는 점에 유의하세요. 이로 인해 **window.token
**은 undefined
값을 가지게 됩니다.
최종 솔루션은 @terjanq에 의해 제공된 다음입니다:
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)