SSRF
openStream
package com.example.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
@RestController
public class SsrfController {
@GetMapping("/ssrf/openStream")
public String example(@RequestParam String url) throws Exception {
URL urlObj = new URL(url);
InputStream is = urlObj.openStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder response = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
return response.toString();
}
}输入没有开放的端口会报错,http://127.0.0.1:8080/ssrf/openStream?url=http://127.0.0.1:9999

可以跳转和查看端口


我们可以使用Spring的RestTemplate类来进行HTTP请求,而不是直接使用openStream()方法。RestTemplate类可以帮助我们更方便地进行HTTP请求,并提供了更多的安全性选项。
openConnection
修复代码
最后更新于
这有帮助吗?