由OSS AccessKey泄露引发的思考
什么是OSS?
对象存储服务(Object Storage Service,OSS)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。
什么是AccessKey?
AccessKey包括AccessKeyID和AcessKeySecret两部分,AccessKeyID用于标识用户,AcessKeySecret用于验证用户的密钥,主要用于程序方式调用云服务API。
我们来看一个简单的测试案例,当测试某个上传点时,获取到一个HTML表单:

请求的主机名xxxx.aliyuncs.com和表单的OSSAccessKeyId参数,基本可以确认系统使用 OSS 作为上传文件存储,即使上传恶意脚本文件也无法成功解析,面对这种情况如何破局?别着急放弃,还有一次机会的。
通过查阅相关文件,我们可以知道使用表单上传文件到 OSS的技术方案里,有三种实现方式:
OSS产品文档:https://help.aliyun.com/document_detail/31923.html
在客户端通过JavaScript代码完成签名,然后通过表单直传数据到OSS。
在服务端完成签名,然后通过表单直传数据到OSS。
在服务端完成签名,并且服务端设置了上传后回调,然后通过表单直传数据到OSS。OSS回调完成后,再将应用服务器响应结果返回给客户端。
当采用JavaScript客户端直接签名时,AccessKeyID和AcessKeySecret会暴露在前端页面,存在严重的安全隐患。
通过翻找js文件,可发现AccessKey就写在js文件里面。

AccessKey泄露,如何进行漏洞利用呢?
AccessKey是访问阿里云API的密钥,将会造成什么样的风险呢。
1、通过API接口
AccessKey ID和AccessKey Secret 就是打开这扇门的钥匙,通过调用API完成对服务器ECS实例的管理和运维操作。
API参考:https://helpcdn.aliyun.com/document_detail/117934.html
2、通过第三方管理工具
OSSBrowser
ossbrowser 是 OSS 官方提供的图形化管理工具,提供类似 Windows 资源管理器的功能,使用 ossbrowser,您可以方便地浏览、上传、下载和管理文件。
下载地址:http://gosspublic.alicdn.com/oss-browser/1.9.4/oss-browser-win32-x64.zip

护卫神.云备份
一键备份数据到阿里云OSS,支持Bucket管理,支持鼠标拖放,支持剪贴板,支持断点续传,支持统计目录大小,支持文件搜索。
下载地址:https://d.hws.com/free/HwsOSS.zip

行云管家
多云管理平台,导入AccessKey,可重置服务器密码,接管服务器。
官方地址:https://yun.cloudbility.com/login.html

常见问题解答
1. OSS的AccessKey 在什么情况下会出现泄露?
采用JavaScript客户端直接签名时,AccessKeyID和AcessKeySecret会暴露在前端页面,存在严重的安全隐患。
Github等平台泄露,通过关键字可搜索到。
通过其他漏洞读取配置文件获取AccessKey。
2. 前端OSS的AccessKey 泄露,代码如何修复?
采用JavaScript客户端签名直传存在严重安全风险,建议采用服务端签名后直传。
3. 访问OSS的AccessKey泄露了,该如何补救?
最安全的办法就是更换AccessKey,毕竟它只能创建或删除,启用或禁用,是没有给你修改密码的机会的。
4. 测试时,如何简单地来判断OSS的AccessKey是否储存在前端?
可以通过上传操作时,抓取的HTTP请求数量来做简单的判断。
当采用JavaScript客户端直接签名,用户直接上传数据到OSS,一次请求即可完成。
当采用服务端签名后直传的方式,需要用户向应用服务器请求上传Policy,再将数据上传到OSS,至少需要两次请求。
企业上云已成趋势,面对云平台的部署架构,不管是开发、安全或是运维,都将面临新的风险和挑战。云上丰富的产品矩阵,为用户提供了各种实例的选项,但技术方案的实现,云上的安全策略及服务,RAM精准的权限控制,每一步都与安全有关。
由OSS AccessKey泄露引发的思考的更多相关文章
- Spring之LoadTimeWeaver——一个需求引发的思考---转
原文地址:http://www.myexception.cn/software-architecture-design/602651.html Spring之LoadTimeWeaver——一个需求引 ...
- 由SecureCRT引发的思考和学习
由SecureCRT引发的思考和学习 http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652500597&idx=1& ...
- 解决一道leetcode算法题的曲折过程及引发的思考
写在前面 本题实际解题过程是 从 40秒 --> 24秒 -->1.5秒 --> 715ms --> 320ms --> 48ms --> 36ms --> ...
- 【思考】由安装zabbix至排障php一系列引发的思考
[思考]由安装zabbix至排障php一系列引发的思考 linux的知识点林立众多,很有可能你在排查一个故障的时候就得用到另一门技术的知识: 由于linux本身的应用依赖的库和其它环境环环相扣,但又没 ...
- 由<a href = "#" > 引发的思考
原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" > 的方式 绑定clic ...
- 曲演杂坛--一条DELETE引发的思考
原文:曲演杂坛--一条DELETE引发的思考 场景介绍: 我们有一张表,专门用来生成自增ID供业务使用,表结构如下: CREATE TABLE TB001 ( ID ,) PRIMARY KEY, D ...
- class_copyIvarList方法获取实例变量问题引发的思考
在runtime.h中,你可以通过其中的一个方法来获取实例变量,那就是class_copyIvarList方法,具体的实现如下: - (NSArray *)ivarArray:(Class)cls { ...
- 由一个emoji引发的思考
由一个emoji引发的思考 从毕业以来,基本就一直在做移动端,但是一直就关于移动端的开发,各种适配问题的解决,在日常搬砖中处理了就过了,也没有把东西都沉淀下来,觉得甚是寒颜.现就一个小bug,让我们来 ...
- 一次composer错误使用引发的思考
一次composer错误使用引发的思考 这个思考源自于一个事故.让我对版本依赖重新思考了一下. 事故现象 一个线上的管理后台,一个使用laravel搭建的管理后台,之前在线上跑的好好的,今天comop ...
随机推荐
- 教你如何用Python向手机发送通知
------------恢复内容开始------------ 你曾想尝试在服务器端或电脑上向手机发送通知吗? 你曾烦恼过企业邮箱的防骚扰机制吗? 现在,我们可以用一种简单轻松的方法来代替企业邮箱了! ...
- LinuxShell——管道命令
LinuxShell——管道命令 摘要:本文主要学习了Shell中的管道命令. grep命令 grep命令的作用是在文件中提取和匹配符合条件的字符串行,全称是Global Regular Expres ...
- Java生鲜电商平台-电商订单系统全解析
Java生鲜电商平台-电商订单系统全解析 说明:Java生鲜电商平台-电商订单系统全解析主要讲解OMS的内容,设计,开发,架构等知识. 今天分享将会分为以下三个环节来阐述: 1.订单系统的介绍 2.订 ...
- 函数截流---js
<div id="show">0</div> <button id="btn">click</button> & ...
- 装上这 10 个插件,你就是这条 Gai 最靓的仔!
直奔主题,给大家推荐 10 个好用的插件. 1.「Adblock Plus」 世界排名第一的免费广告拦截程序 相信大家都有这样的体验,进某个论坛.新闻或者购物网站,广告满天飞,关掉之后还时不时弹出 ...
- angular版聊天室|仿微信界面IM聊天|NG2+Node聊天实例
一.项目介绍 运用angular+angular-cli+angular-router+ngrx/store+rxjs+webpack+node+wcPop等技术实现开发的仿微信angular版聊天室 ...
- 防火墙centos7执行 service iptables status报错问题完美解决
在centos7 执行防火墙命令时 service iptables status 报错如下: 解决方案 : 1.systemctl start firewalld.service(开启防火墙) 2. ...
- iOS中的NSOperation线程
1.除NSThread之外的第二种多线程的编程方法 2.采用NSOperation(线程操作,通常用他的子类)和NSOperationQueue(线程队列)搭配来做多线程开发,采用NSOperat ...
- ABP进阶教程5 - 多语言配置
点这里进入ABP进阶教程目录 更新脚本 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Cours ...
- WebSocket实现Java后台消息推送
1.什么是WebSocket WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端. 2.实现原理 在实现 ...