从 js map 泄露到接管 OSS 对象存储
2024-5-22 17:19:40 Author: www.sqlsec.com(查看原文) 阅读量:27 收藏

现在 OSS对象存储应用广泛,但开发者安全意识普遍较低,方便之余的同时也会随之带来一些安全风险。虽然本文的场景不是那种 APP 或者源码里面硬编码泄露的 AK 和 SK ,敏感信息虽然都放在了后端服务器,但是还是一点点通过信息收集逐步沦陷。

现在 OSS对象存储应用广泛,但开发者安全意识普遍较低,方便之余的同时也会随之带来一些安全风险。虽然本文的场景不是那种 APP 或者源码里面硬编码泄露的 AK 和 SK ,敏感信息虽然都放在了后端服务器,但是还是一点点通过信息收集逐步沦陷。

对 xxx 小程序进行测试,发现未登录是没法交互的,现在很多小程序都是这样,不登录啥也看不到啊!

不过好在小程序这些解包还是很方便的,我们尝试解包分析小程序,居然发现了测试环境的域名信息:

image-20240521170900640

根据这个域名解析的 IP 使用 fofa 来搜索资产很快找到了这个小程序的一个后端网址信息:

image-20240521171057194

好家伙,还是需要登录才可以,我们又被拦在门外了!

但是作为一个专业的渗透测试工程师,是不能放过任意一个细节的,好消息我们真的发现了前段的 js.map 泄露文件:

image-20240521171411090

虽然被注释了,但是开发者真的没有删除哎:

image-20240521171821940

使用 reverse-sourcemap 项目:https://github.com/davidkevork/reverse-sourcemap

来恢复出 Vue 的源码,可以帮助我们进一步分析网站的一些后端接口:

其实也不是严格的代码审计啦,就简简单单看看前端接口的一些逻辑。

代码审计发现系统应该是存在 OSS 上传服务的,所用的服务器是阿里云的 OSS,也找到了对应的接口信息:

OSS 的 KEY 和 Secret 推测是后端写死的,我们通过前端代码无法直接查看,存放 OSS 这些敏感配置的接口为: /Backend/Common/Common/uploadOssData 这和之前我们调试小程序,发现的敏感配置接口也对得上了:

image-20240521172324703

通过对 index.js 代码阅读审计,可知提交的数据包需要:timestamp、nonce 随机字符串和 sign 签名,其中 sign 签名就是上面几个条件的 md5 的大写:

所以我们可以自己构造 POST 接口和这个 uploadOssData 接口交互:

image-20240521172444961

成功交互了,提示文件名称不能为空,但是尝试添加 file 和 filename 均失败了!

继续回到小程序调试部分,发现这个文件名参数应该可能就是 name !!!

什么!我们居然真的成功和接口交互,拿到了阿里云OSS 非常关键的 access_key_id 和 access_key_secret 了!

其中还有 STS Token ,这是一个具有时效性的 key,这里返回的信息默认是被转义了,我们手动将 \/ 替换成 / 即可。

使用阿里云官方的 OSS 浏览器:

成功接管了很多个对象存储 bucket,这样 OSS 里面的文件均可以增删改查:

发现上海的 ECS 系统备份文件,大小为 18GB 多 :

还有一些数据库相关文件:

以及一些生产服务器的日志相关文件:

image-20240521173321876

其实这里没法深入利用了,但是正常情况下我们一般是需要试试看阿里云的 OSS Key 是不是可以顺便接管服务器,因为正常开发者没有遵循权限最小化原则,往往是不会单独给 OSS 配置最小化的 AK 和 SK 的,大多数情况下都是可以成功的,国光我也历史上使用这个方法接管了不少阿里云服务器。

因为我们这里的 OSS Key 还有 STS Token,所以传统的行云管家等工具是没法直接测试利用的。最后国光这里使用

https://github.com/iiiusky/alicloud-tools 项目来尝试深入利用:

可以正常交互查询:

只不过泄露的 SAK ,SSK 以及 STS Token 居然真的遵循了最小化原则,并没有 ECS 服务器收到牵连:

好的本次渗透测试就到此结束了,虽然没有直接接管到服务器,但也是一个经典的信息收集逐步深入的素材了,就发公众号分享给大家把,就这样,溜了溜了。

对了,对渗透感兴趣的出学者们,欢迎扫描了解一下文章中最下面的安全课程哦~

支持一下

本文可能实际上也没有啥技术含量,但是写起来还是比较浪费时间的,在这个喧嚣浮躁的时代,个人博客越来越没有人看了,写博客感觉一直是用爱发电的状态。如果你恰巧财力雄厚,感觉本文对你有所帮助的话,可以考虑打赏一下本文,用以维持高昂的服务器运营费用(域名费用、服务器费用、CDN费用等)

国光我还重写打赏页面 用以感谢 支持我的朋友,详情请看 打赏列表 | 国光


亲爱的读者们,在这个信息爆炸的时代,网络安全的重要性日益凸显,但同时,这个行业的挑战和误解也随之而来。作为一名网络安全的忠实守护者,我有幸在这个领域深耕多年,见证了无数技术的进步与变迁。

我始终坚信,知识的力量能够改变世界。因此,我用心制作了网络安全系列课程,不仅希望传授给大家宝贵的知识,更希望激发大家对网络安全的热爱和责任感。现在,我正准备推出第二期课程,并更新备受期待的内网安全教程,这是我对网络安全教育事业的承诺和热爱。

然而,正如大家所知,网络安全行业充满了不确定性和挑战。攻击门槛也在不断提高,即便是有 10 年经验的安全专家,有时也可能无法及时发现最新的漏洞,甚至在外人眼中,他们的努力和成就可能与实习生无异。但我相信,真正的价值和成就,是在于我们对知识的执着追求和对技术的不懈探索。

在完成这些课程后,我将暂时离开网络安全领域,转向其他行业。这不仅是一个艰难的决定,也是一个新的开始。但在此之前,我希望能够完成我的心愿,为大家带来更高质量的课程。

如果您对我的课程感兴趣,或者认同我对网络安全教育的执着和热情,请考虑购买我的课程,支持我的工作。您的支持不仅是对我努力的认可,更是对网络安全教育事业的一份贡献。

感谢每一位读者的陪伴和支持,让我们共同守护这个数字世界的安全!

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 国光

打赏

  • 微信

    微信

  • 支付宝

    支付宝



文章来源: https://www.sqlsec.com/2024/05/jsmap.html
如有侵权请联系:admin#unsafe.sh