“ 了解一个漏洞的本质,会更有利于我们去分析,这个文章包含漏洞分析带你初步了解一下浏览器对于我们漏洞产生造成的影响。”
网页前端最大的不同,就是在于代码是直接在浏览器上运行。是浏览器负责读取的你的html代码,负责将css绘制出来,也是浏览器负责执行页面上的js代码。
所以浏览器不想让我们做的,我们就无法做到,这里我们就需要了解浏览器到底做了哪些安全措置,限制了什么东西。
禁止主动读写本机的文件
从后端,比如php之类,他们是直接运行在服务器上,没有特别的权限限制,但是前端的额限制就比较多,比如不能主动去读写电脑的文件。
如果浏览器可以允许,那么其实就和一个木马程序没什么区别了。
2021年时候有一个案例,Opera曾有一个漏洞,这个漏洞是利用了他的笔记功能,可以建立一个笔记分享给其他使用者,然而笔记的网址是opera:pinboards,这个是属于特殊的协议,通常会给予一些特别的权限。然后在建立笔记的时候,可以包含一个链接,漏洞发现者发现也可以使用javascript:alert(1)这种类型的链接去执行,这样就可以得到一个xss的漏洞。
前面世道opera协议会有一些特殊的权限,比如可以开启file://的网页,还可以帮网页截图并且得到截图的结果,就可以利用xss去开启本机的文件,并且截图,传到攻击者的服务器。
禁止呼叫系统api
一般的程序可以做到很多事情,比如说更改系统设定或者是网络的设定,可以通过api进行很多的操作,但是这些javascript做不到,因为浏览器没有提供给网页相对应的api。
当我们在网页前端执行js的时候,我们只能使用浏览器给我们的东西。比如说我们可以使用fetch()去发现一个请求。可以使用setTimeout设定一个计时器,这些都是浏览器提供的。
如果浏览器想要提供蓝牙之类的服务,就需要操作管理权限,一般会询问使用者。
禁止存取其他网页的内容
这个是浏览器比较安全的一个设置,其实就是禁止a网站去读取b网站的内容,也叫做同源策略。
如果没有这种防护,那么我们就可以利用a网站,去盗取用户b网站的cookie等信息。
这里有一个22年的漏洞,谷歌浏览器,可以利用一个iframe(一个html标签,iframe元素会创建包含另外一个文档的内联框架)的漏洞读取 。
假设现在网页是a.com,有一个有iframe的网址是c.a.com,用frames[0].location = 'about:blank'将iframe重定向之后,iframe就会变成a.com,这个时候去请求读取iframe的历史记录,就会从里面拿到原本c.a.com的网址。
正常情况下,当iframe重定向之后,navigation.entries()应该清空,所以这里是一个漏洞。
总结
这次学习的主要,其实就是了解浏览器的安全规则,我们在浏览器中的漏洞,其实就是浏览器不想给我们的,但是我们拿到了,那就是漏洞了。
底下是 CVE-2021-30632 的其中一個 exploit,:https://github.com/CrackerCat/CVE-2021-30632/blob/main/CVE-2021-30632.html
原文始发于微信公众号(白安全组):浏览器的安全模型(开放思路,从不同方面理解漏洞)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论