简介
SSRF指服务器端请求伪造: 由攻击者构造形成由服务端发起请求的一个安全漏洞.往往用于突破内网的访问限制.
解释:多数公司的内网系统是不对外部开放的,特别是金融领域.
由于之前在XXE的修复中其实就存在SSRF漏洞,这里做一些补充,便于后续伙伴理解.
如果小伙伴理解CSRF那么就很容易理解SSRF;前者是客户端请求伪造后者是
危害
主要体现在内网端口扫描和文件读写,当然也可以对内网应用进行攻击.
例如XXE漏洞中,就可以利用XML的文件访问协议扫描内网端口.
产生
产生的方式其实比较多,这里举一些比较
1.使用
如果服务端没有先解析IP再过滤内网地址,我们就可以使用localhost等解析到内网的域名。
这里有一个利用xip.io的例子
https://blog.csdn.net/Fly_hps/article/details/84400273
2.后端解析URL所出现的问题
后端程序可能会对访问的URL进行解析,对解析出来的host地址进行过滤。这时候可能会出现对URL参数解析不当,导致可以绕过过滤。
这个比较好理解.
3.利用服务器内网跳转
这个也比较常见,如果内网访问内网地址的时,如果地址由前端组装传入,且后端没有做校验过滤,就容易出现该问题
还有很多其他的利用非HTTP协议绕过的方式访问内网,这里不做一一举例.
防御
防御需要针对问题来处理
运维方向:限制请求的端口,禁止不常用的协议
java的web后端:java直接利用ssrf有很大的限制.但是依旧存在.
例如:网站程序代码从第三方网站获取数据的同时,以及下载第三方服务器的数据的时候没
有对其进行详细的过滤与安全限制,例如从第三方的URL地址去获取文件,以及下载图片到自己
服务器里,都会有可能形成SSRF攻击。
推荐的防护方式:
白名单过滤
对第三方获取的信息做过滤校验
统一的错误响应
防止302错误的异常跳转
情况允许,可添加IP地址白名单
如果地址仅仅是确定的几个IP地址,可以限定IP