0x1前言

在打野的時候意外發現了一個站點存在spring

boot信息泄露,之前就有看到一些文章可以直接rce啥的,今天剛好試試。通過敏感信息發現存在accesskey泄露,就想直接通過解密,獲取敏感信息,接管云平臺。

首先說下這個漏洞的產生。主要是因為程序員開發時沒有意識到暴露路由可能會造成安全風險,或者沒有按照標準流程開發,忘記上線時需要修改/切換生產環境的配置。我們是可以通過訪問/v2/api-docs和/swagger-ui.html去驗證是否存在的。

0x2漏洞利用

本次我們想獲取/actuator/env里面的明文信息,那么有三種方法可以獲取。

第一種:通過/jolokia接口獲取明文

利用條件:

  1. 1. 目標網站存在 /jolokia 或 /actuator/jolokia 接口
  2. 2. 目標使用了 jolokia-core 依賴(版本要求暫未知)

第二種:通過/env接口發送明文到你vps上

  1. 1. 可以 GET 請求目標網站的 /env
  2. 2. 可以 POST 請求目標網站的 /env
  3. 3. 可以 POST 請求目標網站的 /refresh 接口刷新配置(存在
  4. spring-boot-starter-actuator依賴)
  5. 4. 目標使用了 spring-cloud-starter-netflix-eureka-client 依賴
  6. 5. 目標可以請求攻擊者的服務器(請求可出外網)

第三種:和第二種差不多,只是方式不一樣

  1. 1. 通過 POST /env 設置屬性觸發目標對外網指定地址發起任意 http 請求
  2. 2. 目標可以請求攻擊者的服務器(請求可出外網)

第四種:通過/heapdump下載到本地解密

1、可正常 GET 請求目標 /heapdump 或 /actuator/heapdump 接口

而我這邊采用第四種方法去獲取。先下載一個heapdump文件。

其實我看了好多篇文章,使用jvisualvm.exe嘗試去解開heapdump,但是都無法正常獲取,可能也是我操作有問題,后續使用Eclipse

Memory Analyzer,完美解決。

使用Eclipse Memory Analyzer去查詢對應的字段:

  select * from java.util.LinkedHashMap $Entry x WHERE (toString(x.key).contains("accessKeySecret"))

注意:這邊默認是不支持模糊查詢的,必須字段完全匹配才能查詢到字段。如僅輸入accessKey是查詢不到accessKeySecret的字段值的。

0x3接管云平臺

成功獲取accessKeySecret和accessKeyId后,接下來我們就可以使用cf進行接管云平臺了。

鏈接:https://github.com/teamssix/cf

使用cf config配置accessKeySecret和accessKeyId:

配置完直接一鍵接管:cf alibaba console

這邊會生成地址和賬號密碼,拿去登錄即可獲取云平臺賬號權限:

這邊可以看到,他是有5臺服務器實例的,直接獲取5臺服務器權限。

0x4結尾

其實我之前不只嘗試了第四種,而是被迫使用第四種方式獲取明文信息。嘗試前面三種,都是以500報錯結束,具體也不知道是什么原因,有大佬知道的可以教一下。

本文其實只是想讓大家了解一下一些漏洞和一些信息泄露的用法,其實很多東西都是沒有含金量的,說破不值錢。自己最近接觸了很多剛開始學習安全的人,都不知道從何入手。對于剛剛開始學習的人,個人建議可以多看看漏洞原理和別人的文章,從中吸取經驗和滲透思路,很多實力其實都是經驗累積出來的。可能有時候看到別人文章,會覺得就是一帆風順的,很簡單,但是其實很多人只是沒把自己走了多少彎路,踩了多少坑說出來罷了。本人也只是剛開始摸索的小白,本身學習是學無止境的,純靠興趣去驅動。