搜索
查看: 1598|回复: 0

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

[复制链接]

1839

主题

2255

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
11913
发表于 2017-10-9 18:20:06 | 显示全部楼层 |阅读模式
原文链接:https://mp.weixin.qq.com/s?__biz ... 5a6c0361a3c6c57d3d5
noframes
先看一段HTML

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

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

原来,img标签src属性里的</noframes>把外层的<noframes>给闭合了,导致src后半部分的script标签被解析成了HTML,从而触发了弹框。
这可奇怪了。</noframes>明明在双引号里面,怎么就跨越了src属性跨越了img标签,漂洋过海地把外层的noframes标签给闭合了?难道说,noframes标签有一种特殊的魔力。它的闭合优先级,高于双引号的完整性优先级,高于嵌套在内层的标签的闭合优先级。
还有其他标签也有这样的魔力么?我们fuzz一下看看。
fuzz找找
从w3school找到所有的HTML标签:

整理成tags.txt。

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

打开show.html看一下效果。

现在我们知道,这些标签都是闭合优先级高于双引号完整性优先级的特殊标签。
  • <!--
  • <iframe>
  • <noframes>
  • <noscript>
  • <script>
  • <style>
  • <textarea>
  • <title>
  • <xmp>

攻击场景
这个特性出现的原因,可能是源于浏览器对DOM树的特殊处理。而在某些xss攻击的场景下,这一特性可能导致意想不到的结果。
特别是,对于邮箱或者论坛等支持富文本的应用中。出于防御xss的考虑,一定会对用户的输入进行语法分析和检查。但是,如果语法分析的结果和浏览器的识别结果不一致的话,就会形成xss的攻击点。
比如文章开头的那段noframs语句,如果将src中的内容统一理解为img的src属性,就可能形成XSS攻击。
这个特性还有哪些用处,就需要你的脑洞大开了:)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?Join BUC

x
过段时间可能会取消签到功能了
您需要登录后才可以回帖 登录 | Join BUC

本版积分规则

Powered by Discuz!

© 2012-2015 Baiker Union of China.

快速回复 返回顶部 返回列表