top.location和x-frame-options和xss

admin 2021年12月7日10:08:05安全文章评论65 views1224字阅读4分4秒阅读模式

菜鸡是可以不用学习的,快去打游戏吧!——鲁迅


今天在测试系统的时候发现了一个有趣的地方,本身这个XSS(反射型的)没啥有趣的,只是想记录下这个知识点。

在页面中一段话代码成为关键:

if(top.location == location){window.location.href="xxxx";}

因为在测试的时候,我直接访问地址,地址里被我注入了js,按道理会执行。但是看代码的时候发现这句话在我执行js代码之前,由于js是单线程的,所以会执行到这句代码之后就跳过后面的代码。


01


top.location&&location


top.location.href="url"          在顶层页面打开url(跳出框架)

self.location.href="url"         仅在本页面打开url地址

parent.location.href="url"      在父窗口打开Url地址

this.location.href="url"       用法和self的用法一致

location="url"   和window.location是一致的,因为当前最顶层的对象就是

window


02


那么根据上面的规则
当直接打开一个页面的location和top.location是一致的,例如我在编写这篇文章的时候调试下当前的location
top.location和x-frame-options和xss
但是如果是通过iframe元素嵌套的话,那么元素可能就不一样,我做了一个图来表达

top.location和x-frame-options和xss

不笨的同学很容易发现,通过iframe后的,在frame元素里的top.location和location是不一致的。所以那句top.location==location就不相等就不会进入这个if语句,自然也就不会触发winodw.location.href重定向。

那么问题来了。

这个东西有什么鸟用呢?

其实这个东西是常常被用来x-frame

就是用来防止clickjacking

一般的写法是:

if(top!=self){top.location.href=xxxx}

当然这句话是可以被绕过的…

一般现代的网站里,通常用设置一个x-frame-options来防御Clickjacking,对于社交类属性的网站,clickJacking还是有点厉害的。


03


X-frame-options


X-Frame-Options共有三个值:

DENY     任何页面都不能被嵌入到iframe或者frame中。

SAMEORIGIN   页面只能被本站页面嵌入到iframe或者frame中。

ALLOW-FROM uri   页面只能被指定的Uri嵌入到iframe或frame中。


所以我回顾今天遇到的问题,我只要通过一个iframe来src引入那个反射型xss即可触发payload。谜题解开了,嗯 好睡觉了 ~~~~888~~~~





END


模板没有抄袭于雷神测测




本文始发于微信公众号(xsser的博客):top.location和x-frame-options和xss

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月7日10:08:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  top.location和x-frame-options和xss http://cn-sec.com/archives/482029.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: