meta标签注入
概述
<meta> 标签表示不能由其他HTML相关元素表示的元数据。一些 <meta> 标签是信息性的,例如:
<meta name="name" content="content">然而,其中一些会以某种方式影响页面,例如:
<meta http-equiv="content-security-policy" content="default-src 'none'; base-uri 'self'"><meta http-equiv=...> 是页面上的一个标签,可以模拟通常为页面头保留的功能子集。<meta http-equiv=...> 可以执行的危险功能包括:
set-cookie:set-cookie指令已从标准中移除,在 Firefox 68 和 Chrome 65 中不再支持。
refresh:重定向到任何常规URL。
重定向到任何
data:URL。
使用 data: 方案执行任意JavaScript
带有 content = "0; data: " URI 的 <meta> 标签可用于执行任意JavaScript代码,例如:
<meta name="language" content="0;data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==" http-equiv="refresh"/>这仅在Safari上有效。Firefox和Chrome会阻止这个操作:
Firefox不允许将顶层框架导航到data URL。
Chrome不允许导航到顶层
data:URI。
开放重定向
可以使用以下payload将用户重定向到任意页面:
<meta name="language" content="5;http://malicious-website.com" http-equiv="refresh"/>参考资料
最后更新于