java -- SSRF 攻击原理及防御

什么是 SSRF

服务器端请求伪造(SSRF)是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求的对其他网站进行攻击。(利用一个可发起网络请求的服务当作跳板来攻击其他服务)

简单理解就是:

攻击者能够利用目标帮助攻击者访问其他想要攻击的目标

A让B帮忙访问C

为什么会产生SSRF漏洞?

很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。且没有对目标地址做过滤与限制,就产生了SSRF

这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地的服务器。这种形式的攻击称为服务端请求伪造攻击,简称SSRF。例子如下,百度识图:

在这里插入图片描述

地址栏提供了让我们输入url的接口,然后系统去访问,这里是做过防护的,如果没有防护,我们就可以直通内网。

SSRF的利用场景

1 首先了解到的是存在SSRF漏洞的服务器,可以当成我们的一个跳板,去测试其他服务器

2 如果一个公司内网外网不是物理隔离,可以通过这台服务器进行内网探测存活主机及端口,这应该属与信息搜集

3 可以对内网Web应用进行指纹识别,原理是通过请求默认的文件得到特定的指纹,这也是属于信息搜集,而且也是把漏洞服务器当成一个跳板

4 SSRF本身是支持很多协议的,通过一些函数,如fsockopen()、file_get_contents()、curl_exec()造成的SSRF漏洞,可以让我们对本地的敏感文件进行读取

ssrf 的防御方法

1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。如果web应用是去获取某一种类型的文件。那么在把返回结果展示给用户之前先验证返回的信息是否符合标准。

2、统一错误信息,避免用户可以根据错误信息来判断远端服务器的端口状态。

3、限制请求的端口为http常用的端口,比如,80,443,8080,8090。

4、黑名单内网ip。避免应用被用来获取获取内网数据,攻击内网。

5、禁用不需要的协议。仅仅允许http和https请求。可以防止类似于file:///,gopher://,ftp:// 等引起的问题。

XSS、CSRF、SSRF的区别

相同点:

XSS,CSRF,SSRF三种常见的Web服务端漏洞均是由于,服务器端对用户提供的可控数据过于信任或者过滤不严导致的。

不同点:

XSS:是服务器对用户输入的数据没有进行足够的过滤,导致客户端浏览器在渲染服务器返回的html页面时,出现了预期值之外的脚本语句被执行。

CSRF:是服务器端没有对用户提交的数据进行随机值校验,且对http请求包内的refer字段校验不严,导致攻击者可以利用用户的Cookie信息伪造用户请求发送至服务器。

SSRF:是服务器对用户提供的可控URL过于信任,没有对攻击者提供的RUL进行地址限制和足够的检测,导致攻击者可以以此为跳板攻击内网或其他服务器。

XSS、CSRF的区别

  1. CSRF是跨站请求伪造; XSS是跨域脚本攻击。
  2. CSRF需要用户先登录网站A,获取cookie; XSS不需要登录。
  3. CSRF是利用网站A本身的漏洞,去请求网站A的api; XSS是向网站A注入JS代码,然后执行JS里的代码,篡改网站A的内容。(XSS利用的是站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。你可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义向第三方网站发送恶意请求。)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值