记一次从信息泄漏到RCE

0x01概述

最近遇到很多 spring boot 的站,这时候问题来了,如果没有 jolokiaenv 不让 POST ,那还能拿到重大成果吗,哈哈哈,下面就慢慢看吧。

0x02 上手操作

目标站存在 spring env 信息泄漏。

http://l1nk3r.xmutsec.com/blog/bi2pt.png

测试情况下发现限制了POST方法。

http://l1nk3r.xmutsec.com/blog/ll0eg.png

http://www.xx.com/heapdump获取调用栈相关信息,如果是 sping boot 2.x 的话路径就是http://www.xx.com/actuator/heapdump

http://l1nk3r.xmutsec.com/blog/l62kg.png

紧接着使用这个工具,将内存加载,有个注意事项是,内存如果解压出来,比如当前我解压出来 1.46G ,那么在 MemoryAnalyzer.ini 这个文件当中需要将内存设置为大于这个大小,我设置为 2G ,否则会报错。

http://l1nk3r.xmutsec.com/blog/qwtbh.png
-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417
-vmargs
-Xmx2048m

进行内存搜索的时候有几个技巧,例如我们在网页上找到了阿里云相关的ak信息,但是sk被脱敏了,如果这时候搞定ak和sk的话,那么势必这个服务器就是我们的囊中之物了。

"aliyun.oss.accessKeyId": "LTAxxxxxxxxxxxx"
"aliyun.oss.accessKeySecret": "******"

所以这里先介绍这个工具的使用思路,以阿里云为例子,由于阿里云实际上开发的时候由自己相关的SDK,从SDK中找到相关类名字,一般 aksk 与这个 OSSClient 有关系

http://l1nk3r.xmutsec.com/blog/e4kyu.png

接着全局搜索 OSSClient 这个关键词,看看哪里调用了他,找到了AliyunOSSServiceImpl.getUserSkinOssClient()这个方法和 OSSClient 有关系,这时候要做的就是进一步搜索 AliyunOSSServiceImpl 找到了 AliyunOSSServiceImpl ,选择下图中的按钮,即可出现我们要的信息了。

http://l1nk3r.xmutsec.com/blog/hrwp5.png
http://l1nk3r.xmutsec.com/blog/hrwp5.png
http://l1nk3r.xmutsec.com/blog/hxlgp.png
http://l1nk3r.xmutsec.com/blog/6p9fi.png

通过这部分信息直接导入行云助手,服务器就出来了。

http://l1nk3r.xmutsec.com/blog/id3p4.png

另外发现腾讯云 qcloud 的相关信息,直接搜索 qcloud,出来关键类 QcloudUtil

http://l1nk3r.xmutsec.com/blog/lzuvh.png

继续搜索 QcloudUtil ,内容就出来了。

http://l1nk3r.xmutsec.com/blog/dv6n1.png
http://l1nk3r.xmutsec.com/blog/c608s.png
http://l1nk3r.xmutsec.com/blog/c608s.png

最后由于微信没有官方的 Java sdk ,因此以 wx 或者 Wx 为关键字进行搜索,从名字来看其他都不是,反正一个个点开看,也找到了。

http://l1nk3r.xmutsec.com/blog/ce503.png
http://l1nk3r.xmutsec.com/blog/ce503.png
http://l1nk3r.xmutsec.com/blog/d7wuo.png

0x03 后话

这个功能点实际上是开发用来做一些内存调试信息报错的,但是对于我们安全人员来说,就会出现很多其他问题,那么问题来了,开发要是转安全,安全还有饭吃吗。