类型: 安全缺陷

    很多Web应用提供了从其他的服务器上获取数据的功能,例如用户指定URL让Web应用加载图片,下载文件等。如果恶意利用这个功能,可以让存在缺陷的Web应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务端请求伪造攻击(Server-side Request Forgery, SSRF)。攻击者利用SSRF可以实现的攻击主要有5种:

    可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务器的banner信息;
    攻击运行在内网或本地的应用程序(比如溢出);
    对内网web应用进行指纹识别,通过访问默认文件实现;
    攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);
    利用file协议读取本地文件等。

    1. String url = request.getParameter("url");
    2. CloseableHttpClient httpclient = HttpClients.createDefault();
    3. HttpGet httpGet = new HttpGet(url);
    4. CloseableHttpResponse response1 = httpclient.execute(httpGet);

    这种使用用户输入影响的资源可能存在风险。