草庐IT

从spring boot泄露到接管云服务器平台

蚁景科技 2023-04-21 原文

0x1前言

在打野的时候意外发现了一个站点存在springboot信息泄露,之前就有看到一些文章可以直接rce啥的,今天刚好试试。通过敏感信息发现存在accesskey泄露,就想直接通过解密,获取敏感信息,接管云平台。

首先说下这个漏洞的产生。主要是因为程序员开发时没有意识到暴露路由可能会造成安全风险,或者没有按照标准流程开发,忘记上线时需要修改/切换生产环境的配置。我们是可以通过访问/v2/api-docs和/swagger-ui.html去验证是否存在的。

0x2漏洞利用

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

第一种:通过/jolokia接口获取明文

利用条件:

  1. 目标网站存在 /jolokia 或 /actuator/jolokia 接口

  2. 目标使用了 jolokia-core 依赖(版本要求暂未知)

第二种:通过/env接口发送明文到你vps上

  1. 可以 GET 请求目标网站的 /env

  2. 可以 POST 请求目标网站的 /env

  3. 可以 POST 请求目标网站的 /refresh 接口刷新配置(存在spring-boot-starter-actuator依赖)

  4. 目标使用了 spring-cloud-starter-netflix-eureka-client 依赖

  5. 目标可以请求攻击者的服务器(请求可出外网)

第三种:和第二种差不多,只是方式不一样

  1. 通过 POST /env 设置属性触发目标对外网指定地址发起任意 http 请求

  2. 目标可以请求攻击者的服务器(请求可出外网)

第四种:通过/heapdump下载到本地解密

1、可正常 GET 请求目标 /heapdump 或 /actuator/heapdump 接口

而我这边采用第四种方法去获取。先下载一个heapdump文件。

其实我看了好多篇文章,使用jvisualvm.exe尝试去解开heapdump,但是都无法正常获取,可能也是我操作有问题,后续使用EclipseMemory Analyzer,完美解决。

使用Eclipse Memory Analyzer去查询对应的字段:

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

注意:这边默认是不支持模糊查询的,必须字段完全匹配才能查询到字段。如仅输入accessKey是查询不到accessKeySecret的字段值的。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

0x3接管云平台

成功获取accessKeySecret和accessKeyId后,接下来我们就可以使用cf进行接管云平台了。

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

使用cf config配置accessKeySecret和accessKeyId:

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

这边会生成地址和账号密码,拿去登录即可获取云平台账号权限:

这边可以看到,他是有5台服务器实例的,直接获取5台服务器权限。

0x4结尾

其实我之前不只尝试了第四种,而是被迫使用第四种方式获取明文信息。尝试前面三种,都是以500报错结束,具体也不知道是什么原因,有大佬知道的可以教一下。

本文其实只是想让大家了解一下一些漏洞和一些信息泄露的用法,其实很多东西都是没有含金量的,说破不值钱。自己最近接触了很多刚开始学习安全的人,都不知道从何入手。对于刚刚开始学习的人,个人建议可以多看看漏洞原理和别人的文章,从中吸取经验和渗透思路,很多实力其实都是经验累积出来的。可能有时候看到别人文章,会觉得就是一帆风顺的,很简单,但是其实很多人只是没把自己走了多少弯路,踩了多少坑说出来罢了。本人也只是刚开始摸索的小白,本身学习是学无止境的,纯靠兴趣去驱动。

更多靶场实验练习、网安学习资料,请点击这里>>

 

有关从spring boot泄露到接管云服务器平台的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby - Rails 开发服务器、PDFKit 和多线程 - 2

    我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:

  9. ruby - Dropbox 类似 git 的服务——没有 rsync 和 inotify - 2

    关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec

  10. ruby TFTP 服务器 - 2

    我将以下代码放在一起用于一个简单的RubyTFTP服务器。它工作正常,因为它监听端口69并且我的TFTP客户端连接到它,我能够将数据包写入test.txt,但我不只是写入数据包,我希望能够从我的客户端通过TFTP传输文件到/temp目录。预先感谢您的帮助!require'socket.so'classTFTPServerdefinitialize(port)@port=portenddefstart@socket=UDPSocket.new@socket.bind('',@port)whiletruepacket=@socket.recvfrom(1024)putspacketFile

随机推荐