Skip to content

接口"/system-info/health"存在SSRF漏洞 #2103

@Dayeh-X

Description

@Dayeh-X

问题说明

接口“/system-info/health”源码使用RestTemplate发起请求,对用户输入的host没有限制。
源码

@PreAuthorize(value = "@permissionValidator.isSuperAdmin()")
@GetMapping(value = "/health")
public Health checkHealth(@RequestParam String host) {
       return restTemplate.getForObject(host + "/health", Health.class);
}

利用

1. 对内网发起请求,打poc

对内网地址可以搭poc,在host末尾通过添加“%23“截断源码中的“/health”
证明:本地搭建一个有命令执行的php服务,和一个apollo服务,通过接口向php服务发起请求,命令执行成功。

2. 内网端口探测

参数host传入内网ip和端口,可通过返回的错误信息判断端口是否开启。
证明:官方给的测试环境106.12.25.204:8070, 利用接口访问局域网内192.168.0.4:8080,返回证明可以从外网访问内网ip。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions