长亭百川云 - 文章详情

HTML中,闭合优先的神奇标签

闻道解惑

37

2024-07-13

noframes

先看一段HTML

看上去就是展示了一张图片而已。用浏览器打开看看。

咦?怎么弹框了?看看源码。

原来,img标签src属性里的把外层的给闭合了,导致src后半部分的script标签被解析成了HTML,从而触发了弹框。

这可奇怪了。明明在双引号里面,怎么就跨越了src属性跨越了img标签,漂洋过海地把外层的noframes标签给闭合了?难道说,noframes标签有一种特殊的魔力。它的闭合优先级,高于双引号的完整性优先级,高于嵌套在内层的标签的闭合优先级。

还有其他标签也有这样的魔力么?我们fuzz一下看看。

fuzz找找

从w3school找到所有的HTML标签:

整理成tags.txt。

按照前述noframes的格式,依次把他们输出到show.html中。

打开show.html看一下效果。

现在我们知道,这些标签都是闭合优先级高于双引号完整性优先级的特殊标签。

  • <noframes>
  • <style>
  • <title>

攻击场景

这个特性出现的原因,可能是源于浏览器对DOM树的特殊处理。而在某些XSS攻击的场景下,这一特性可能导致意想不到的结果。

特别是,对于邮箱或者论坛等支持富文本的应用中。出于防御xss的考虑,一定会对用户的输入进行语法分析和检查。但是,如果语法分析的结果和浏览器的识别结果不一致的话,就会形成xss的攻击点。

比如文章开头的那段noframs语句,如果将src中的内容统一理解为img的src属性,就可能形成XSS攻击。

这个特性还有哪些用处,就需要你的脑洞大开了:) 

点击“阅读原文”,查看w3school的HTML标签列表。

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2