实战阿里云OSS云攻防

现在,云服务器逐渐进入人们的视野,越来越受欢迎,由于云服务器易管理,操作性强,安全程度高,很多大型厂商都选择将资产部署在云服务上,但随之也出现了一些安全问题,接下来将介绍五个案例,由于以下的案例大多都是真实案例,所以打码会打得严重些。

0x00 写在前面

现在,云服务器逐渐进入人们的视野,越来越受欢迎,由于云服务器易管理,操作性强,安全程度高,很多大型厂商都选择将资产部署在云服务上,但随之也出现了一些安全问题,接下来将介绍五个案例,由于以下的案例大多都是真实案例,所以打码会打得严重些。

0x01 案例演示

从任意文件上传到任意文件覆盖

遇到一个文件上传点

image.png

先上传一个图片,并抓包,成功上传,上传html文件看是否能xss,能够上传但是上传后不解析,继续更改Content-Type的值为text/html,上传后成功弹窗。

包如下:

  1. POST / HTTP/1.1
  2. Host: xxxx.aliyuncs.com
  3. Connection: close
  4. Content-Length: 1077
  5. Accept: application/json, text/plain, \*/\*
  6. Origin: https://xxxxxx
  7. User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36
  8. Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryral5YOuPBEepOBbe
  9. Referer: https://xxxx.cn/xx/
  10. Accept-Encoding: gzip, deflate
  11. Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  12. \------WebKitFormBoundaryral5YOuPBEepOBbe
  13. Content-Disposition: form-data; name="name"
  14. 165027756922712.png
  15. \------WebKitFormBoundaryral5YOuPBEepOBbe
  16. Content-Disposition: form-data; name="key"
  17. 20220418/3a7166a3063f7a82774bdd62727fb5fa251650277569228.png
  18. \------WebKitFormBoundaryral5YOuPBEepOBbe
  19. Content-Disposition: form-data; name="policy"
  20. eyJleHBpcmF0aW9uIjoiMjAyMi0wNC0xOFQxNzoyMzoyOFoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsMCwxMDQ4NTc2MDAwXSxbInN0YXJ0cy13aXRoIiwiJGtleSIsIjIwMjIwNDE4XC8iXV19
  21. \------WebKitFormBoundaryral5YOuPBEepOBbe
  22. Content-Disposition: form-data; name="OSSAccessKeyId"
  23. xxxxx
  24. \------WebKitFormBoundaryral5YOuPBEepOBbe
  25. Content-Disposition: form-data; name="success\_action\_status"
  26. 200
  27. \------WebKitFormBoundaryral5YOuPBEepOBbe
  28. Content-Disposition: form-data; name="signature"
  29. xxxxx
  30. \------WebKitFormBoundaryral5YOuPBEepOBbe
  31. Content-Disposition: form-data; name="file"; filename="12.png"
  32. Content-Type: text/html
  33. <script>alert(1)</script>
  34. \------WebKitFormBoundaryral5YOuPBEepOBbe

2.png

拼接上去就造成了存储xss,当然也可以挂黑页等操作,由于这是oss云服务器,并且域名太长没实际性危害。

3.png

在他的其他网站下static图片地址引起了我的注意,static不也是存放静态资源图片等信息的服务器吗?而oss也是一样的,那么两者是否会相通呢?

5.png

我直接将oss服务器域名删除后替换为static服务器也直接弹窗。那不就造成了它的子域名存储xss吗?这其实是oss服务器和他的static静态服务器进行绑定的结果,所以我们上传的html也可以被static服务器接收并解析。

4.png

后面看了看文件名和路径是否可控,既然可控把我高兴坏了呀,尝试是否可以实现任意文件替换。

15.png

我随意选择了一张图片将要替换的图片保存了一手,然后做个稍微小一点的标记进行上传,这样就能够证明危害,师傅们挖此类漏洞的时候也要注意。
接着我更改了目录名和服务中图片名命名为同一个,成功上传

16.png

可以看到我上传的图片中多了一个x,也就是我做的标记,由于该网站还有js等文件,那么也可以进行js等文件覆盖,那么将造成整个网站被我们所控制,可想而知危害有多大。

9.png

在我们遇到oss任意文件上传的时候,先判断文件的路径和文件名是否可控,接着去同厂商的其他网站查找静态图片或文件,看是否可以相互转换,实现任意文件覆盖,这样一个几乎毫不起眼的危害将直接提升为严重危害。

image.png

信息泄露

在oss渗透思路中我还遇到accessKeyId、accessKeySecret泄露,如果这两个泄露就能获取到oss对象存储的所有权限。

image.png

常见泄露方式有以下四种:

文件上传点

在文件上传点,抓包就直接泄露

10.png

源码文件中泄漏

反编译获取小程序的源码和APP的源码
我还是喜欢用fileseek手工查找,需要注意的是很多时候都会对accessKeyId、accessKeySecret进行缩写

1.png

2.png

通过应用程序报错读取

该情况我没有碰到,但是朋友那遇到了,大概是这样,比如请求某个接口,返回包中报错出现accessKeyId、accessKeySecret敏感信息,这里只能打个比方如下:

3.png

目标网站JS文件中获取

4.png

阿里云OSS存储桶接管

原理:管理员通过域名解析绑定了一个存储桶,管理员不需要这个存储桶将器删除后,由于没有将域名解析的CNAME删除,就会出现下面的NoSuchBucket情况,要想接管该存储桶还需要一个前提就是需要在传输管理配置绑定域名,下面的情况可以接管存储桶。

5.png
我们只需要创建同样的存储桶名称即可,这里我没有进行接管,先提交了和产商核对确实存在(提醒一下那个地域需要和目标的一样)

6.png

Bucket权限配置错误-导致信息泄露

在进行Bucket桶创建时,默认的权限时私有权限,如果在配置成为公共读或者公共读写的情况下,这里配置成公开读

7.png

无法列出存储桶

8.png

但是如果创建了公共读并且Bucket授权策略设置成ListObject,将导致遍历存储桶

9.png

10.png
以下存储桶由于配置错误,导致了整个存储桶遍历

11.png

接下来我们拼接key标签下的值,导致身份证信息泄露

image.png

Bucket权限配置错误-导致拒绝服务

在我们遍历存储桶时,其实还可以增加一个漏洞就是拒绝服务(这个要根据情况具体分析)

原理:由于max-keys参数可控,我们通过更改max-keys的大小请求服务器,由于服务器接收到该请求要根据这个参数的大小返回数据给我们客户端,将占用服务器资源,这将经历一个漫长的过程,我们通过工具发送大量的该请求,就可以在短时间内使整个存储桶造成拒绝服务。(这里关键是要观看最大值返回的数据包大小和响应的时间)

12.png

更改max-keys的值,如果值在不断变大并且响应时间需要几十秒和数据非常大的话,说明存在拒绝服务漏洞。

13.png

0x02 结语

以上是阿里云OSS攻防的常见思路,欢迎大家关注公众号:红云谈安全

  • 发表于 2022-06-07 09:38:55
  • 阅读 ( 11585 )
  • 分类:渗透测试

0 条评论

Honeypot
Honeypot

17 篇文章

站长统计