干货 | 实战中通过AccessKey与AccessSecret接管文件存储服务的攻击场景
2022-6-5 11:23:11 Author: mp.weixin.qq.com(查看原文) 阅读量:19 收藏

0X00    前言

互联网的时代正在高速发展。在互联网的发展中,数据存储技术的各种应用方式也在经历不断地变换。在如今,OSS对象储存已经成为一种被广泛采用的存储模式,很多企业都习惯将大量的数据都通过云储存的形式为商户实现便捷服务。

所谓对象存储OSS,是在云上提供无层次结构的分布式存储产品,为用户提供单价较低且快速可靠的数据存储方案。用户可通过云服务器实例或互联网使用Web API接口存储和检索数据。在OSS上的数据,用户使用指定域名的URL地址,通过HTTP/HTTPS协议存储和检索每个独立的数据对象内容。简单理解,类似AI停车。我们(前端应用)把车停进去,换来一张卡片(对象的标识符)。我们不用关心车(数据)具体停在车库(存储)的哪个车位,这样省事儿、省时间。

使用OSS进行文件的存储是有非常多的好处的,它可拓展性高、效率高、安全性高、成本低、访问方便。

如今主流的公有云厂商有这些:亚马逊(AWS S3),腾讯云(COS),阿里云(OSS),华为云(OBS),百度云(BOS),网易(NOS),快快云(OSS)。虽然各厂商的产品还是有些区别的,但是在利用方式上仍然大同小异

0X01    实战利用

AccessKey ID与AccessKey Secret之于OSS服务的重要性

关于OSS存储的诸多技术细节不再赘述,我们只关心在实战中如何针对各类OSS服务进行攻击,针对OSS的攻击,绕不开的一点就是AccessKey ID与AccessKey Secret的获取(各大厂商对其的命名略有不同,但它们的功能是类似的)。下面通过阿里云和AWS两家厂商对AccessKey ID(下文简称AK)、AccessKey Secret(下文简称AS)的描述来简要介绍其功能。

简单来说,AK与AS就是一种调用服务API的凭据,可以简单理解为在这种特殊场景下的“账号”与“密码”,我们想要使用OSS的各种功能,也是无法离开AK与AS的。换句话说,如果攻击者设法找到了AK与AS,是否意味着对OSS云存储服务的直接接管呢?

0X02    实战场景中AK与AS的寻找方法

在实战中要如何寻找AS与AK是我们要面临的重要问题,笔者以对某厂商的一次测试为例,抛出第一种寻找方法——敏感文件的泄露。这里的敏感文件是广义的,可以是各种内存的泄露、可以是某些数据库里存储的信息、甚至可以是运维人员图方便而写的一些备忘文本。本案例是通过找到Spring泄露的heapdump文件进行分析的。

通过一款heapdump自动化分析工具,我们可以方便快捷的分析heapdump中泄露的各种敏感信息,如下图,工具找到了泄露的AK与AS

于是我们通过该AK与AS,成功接管了该OSS服务,并且找到了海量的数据(进一步说明,对于这种文件存储服务,只要被攻击者接管,所泄露的数据量将会是巨大的)

值得注意的是,某些情况下phpinfo等探针文件也会抛出AS与AK(如下图),攻击队在找到探针类文件后,可以尝试搜寻AccessKEY、AK、OSS、SECRET等字样来分析是否存在AK与AS的泄露

还有一种比较偏门的地方是通过各种报错进行泄露,比较可能的情况有ThinkPHP的Debug模式,以及其他的一些因配置不当报错而泄露AK与AS

类似下图这种就是比较典型的报错泄露:

如图,直接抛出了AWS的AK与AS。但是通过报错来寻找AK与AS在实战中具有相当大的不可控性,属于是可遇不可求的一种发现方法

实战中还有一种可能性较大的寻找方法就是从github等开源平台入手(适用于体量较大的目标),有些开发者可能关注到员工账密、员工个人信息等敏感信息的脱敏,但是忘记了对AK与AS进行脱敏,在通过github查询目标的各种信息时,要留意一下有没有泄露AK与AS。如下图,就是从github上发现了相关信息

我们最后介绍一种实战中容易碰见的,并且也是危害性最大的——在JS文件甚至是文件上传数据包中发现AK与AS。在介绍这种情况之前,可以简单的了解一下文件上传到OSS服务器过程中的三种经典验证方式。

①  在客户端通过JavaScript代码完成签名,然后通过表单直传数据到OSS。②  在服务端完成签名,然后通过表单直传数据到OSS。③  在服务端完成签名,并且服务端设置了上传后回调,然后通过表单直传数据到OSS。OSS回调完成后,再将应用服务器响应结果返回给客户端。

当我们在文件上传处看到下图类似的字样时,基本可以判断这是使用OSS进行文件存储(还有一个常见特征是OSS文件存储分多步进行,一个文件上传操作会产生好几个数据包,普通的文件上传操作基本只用一个数据包即可完成)。当看到这个特征时,攻击者要马上反应过来——到JS文件中尝试寻找AK与AS

为什么呢?我们不难看出,上文提到的第一种方式是非常危险的。因为AK与AS写死在前端文件了,这意味着我们只需要花点时间就可以找到他。如下图就是在JS文件中分析出的明文AK与AS。攻击者也可以自己动手,开发工具来尝试读取JS中的这类关键词从而节省人工寻找的时间!

还有一些粗心的开发人员甚至直接在数据包中明文传递AK与AS,这无疑是为攻击者提供了便利,注意OSS上传数据包中传递的这些数据,它们也很有可能是明文的AK与AS!

0X03    如何利用AK与AS

上文总结了常见的AK与AS泄露情况,那么攻击方人员如果拿到了AK与AS,应该如何去利用?其实获得这两个信息之后允许攻击者做出非常多危险的操作。上至命令执行,下至文件泄露,本文也着重介绍一下这两种攻击手法。

Github上有相当多的AK与AS利用工具,基本上覆盖了所有主流的云厂商,足够满足我们正常攻击中的各种需求,本文就以阿里云AK与AS泄露来演示其利用。使用下图的这款工具

可以以root权限执行任意命令,在这种情况下等于直接拿下目标服务器的权限。据了解AWS提供的OSS服务一旦泄露AK与AS,也可以造成类似的命令执行问题,笔者未对其它主流厂商提供的服务进行了解与实践,各攻击队可以自行研究尝试。

以上便是AK与AS最具威胁性的一种利用方式。下面介绍一种威胁性稍小的,就是任意文件的上传下载。上文提到了笔者使用AK与AS进入了OSS服务并且完成了任意文件的上传下载。这其中我们借助的就是这个MinIO Browser,攻击队如果在资产搜集的过程中遇到了类似的、使用AK与AS进行验证的资产,应该也可以使用类似的方式登陆进去并对其接管。

当然,通过OSS Browser、行云管家之类的现成的工具,攻击者也可以方便快捷的对OSS服务进行接管

0X04    攻击层面上的一些小思考

上文主要介绍了两种对OSS的攻击方式,但是在利用方法上,还是能衍生出非常多有意思的点的。比方说命令执行来说,既然我们可以用root方式进行命令执行,那么我们拿下一台低权限机器的时候,是否可以通过寻找AK与AS实现提权?再比如说任意文件上传下载,虽然OSS服务上的文件不支持解析,但是我们是否可以通过替换一些文件(比方说目标网站支持下载文件之类的功能),从而实现投毒?在利用层面上,OSS服务也可以衍生出许多“异想天开”的攻击方法,值得攻击者深入思考!

0X05    结语

随着中国互联网的不断进步,OSS存储服务这类相较于传统上传方式有大量优点的云存储模式毫无疑问会逐渐成为主流,这是互联网发展的大势所趋。因此在往后的攻防演练、渗透测试中,攻击者会遇到越来越多的OSS服务以及相关的云服务,深入研究分析其攻防技术是必不可少的,本文以实战中遇到的案例为引,简单总结了实战中关于OSS服务攻击的一些常见情况,希望能起抛砖引玉之效用!


推荐阅读:

干货 | 红队和漏洞挖掘中那些关于”文档“的妙用(上)

干货 | 红队和漏洞挖掘中那些关于"文档"的妙用(下)

干货 | Office文档钓鱼的实战和免杀技巧

干货 | Office文档钓鱼之如何快速进行宏免杀

实战 | WAF-Bypass之SQL注入绕过思路总结

实战 | 记一次团队合作的情况下还疯狂踩坑的vCenter环境渗透经历

点赞,转发,在看

原创投稿作者:[email protected]


文章来源: http://mp.weixin.qq.com/s?__biz=MzI5MDU1NDk2MA==&mid=2247505739&idx=1&sn=25460b4c6f4e37eeabbc319f914f9372&chksm=ec1c8274db6b0b62181513c1c9cee17519b951c154246650d4b1b5abe8517a3d0444e4715693#rd
如有侵权请联系:admin#unsafe.sh