被泄露的OSS密钥(阿里云OSS使用前端直传的危害)

之前简单写过一篇介绍OSS几种上传方式对比的文章(阿里云OSS上传方式对比),其中最不建议的就是使用js前端直传的方式,下面本文将结合实际例子,看看它为什么不安全。

一、如何判断目标站点是不是使用了OSS的前端直传

按F12打开浏览器的调试窗口,然后进行在web的上传页面进行文件上传操作,如果浏览器Console窗口出现了类似以下的信息(please use STS for safety……)则说明采用的是不安全的前端直传。

意思就是阿里oss的前端直传的js sdk提示为了安全起见,使用STS授权前端的模式进行上传,而不要直接把阿里云oss的AccesssKeyID和AccessKeySecret写在代码里面。

二、如何找到oss密钥所存放的js文件

既然已经发现改站点使用的是oss直传方法,那么下一步就是找该oss的 AccesssKeyID和AccessKeySecret存放位置。

我的方法是在调试窗口的Network里面进行排查,查看这个上传都请求了哪些js文件,然后在新标签里面打开这些js文件,并用关键字key进行查找,找到写有明细的赋值语句即可。把你认为有可能的js文件都排查一遍。

最终,找到了存放密钥配置的js文件,里面有bucket名,KeyId和KeySecret等信息,但是,我们并不能直接用,为什么因为它里面有个加密函数atob(),如果没有它做到这里基本就结束了。可是当我尝试去找出这个atob函数定义的时候,翻遍了所有js文件都没找到,那么如果解密呢?

三、解密atob,获取真实的id与key

在找了N个js文件后,基本已经放弃去寻找加密函数了,后来转念一想,既然它是前端js直接存储及控制的,那么我直接在控台调用atob函数解密不就可以了!果然直接console输出该函数调用就解密了。

四、获取oss的bucket权限,管理该bucket下的所有OSS文件

根据获取到的id和key能有多少oss权限,取决于开发者的权限配置,一般来讲再差的开发者都会为每个bucket配置不同的id与key,防止一个被攻破后影响其他的bucket。

直接使用oss-browser配置好后直接登录oss

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/get-aliyun-oss-appkeysecret/

赞赏

微信赞赏支付宝赞赏

发表评论