SSRF漏洞的原理及防御

2020-08-28  本文已影响0人  文景大大

一、什么是SSRF漏洞

服务端请求伪造(Server-Side Request Forgery),是指服务器使用用户输入的URL进行资源请求时,未对该URL进行安全校验,从而导致请求内容不可控,其危害主要表现为:

二、SSRF漏洞的绕过

我们以Java代码为例展示这个漏洞是如何发生的:

@PostMapping(value = "/getOtherSiteContent")
public ModelAndView getOtherSiteContent(HttpServletRequest request, HttpServletResponse response){
  String uri = request.getRequestURI();
  // 未对用户输入的URL做校验就打开连接
  HttpURLConnection connection = (HttpURLConnection)new URL(uri).openConnection();
  // 省略处理逻辑...
}

倘若,黑客传入的URL是localhost:8080,那么就可以逐步扫描本地所有对外开放的端口服务;同样的,黑客也可以猜测一些常见的内网IP地址进行输入,从而扫描内网的一些原本不对外开放的端口服务;这些通过BP工具可以很容易地做到。

假设开发人员已经意识到了如上的问题,采用了注入黑名单和白名单的方法,那么就能解决SSRF漏洞问题吗?不一定。

三、如何防御SSRF漏洞

四、参考内容

SSRF 漏洞记录

SSRF漏洞

上一篇 下一篇

猜你喜欢

热点阅读