类型: 安全缺陷
很多Web应用提供了从其他的服务器上获取数据的功能,例如用户指定URL让Web应用加载图片,下载文件等。如果恶意利用这个功能,可以让存在缺陷的Web应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务端请求伪造攻击(Server-side Request Forgery, SSRF)。攻击者利用SSRF可以实现的攻击主要有5种:
可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务器的banner信息;
攻击运行在内网或本地的应用程序(比如溢出);
对内网web应用进行指纹识别,通过访问默认文件实现;
攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
利用file协议读取本地文件等。
String url = request.getParameter("url");
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response1 = httpclient.execute(httpGet);
这种使用用户输入影响的资源可能存在风险。