美文网首页
SSRF安全漏洞以及防御实现

SSRF安全漏洞以及防御实现

作者: 没睡醒的鱼 | 来源:发表于2018-07-31 15:37 被阅读49次

简介

SSRF即服务端请求伪造,利用漏洞伪造服务端发起请求,从而突破客户端获取不到数据的限制

形成的原因

服务端提供了从其他服务器获取数据的功能且没有对目标地址做过滤和限制

场景

当我们向一台服务器发起请求的时候,我们把请求的地址改成了获取与该服务器相连的内网服务器资源的地址,从而可以获取另一台服务器上的数据

解决方案

协议的限制

当请求方法允许其他协议的时候,可能利用file,ftp等协议进行第三方服务利用来获取权限
对URL的协议默认只能允许http和https,当然用户可以根据自己的实际情况再补充一些允许访问的协议

IP限制

  1. 当IP为内网IP时,默认情况下是不允许访问的,通常将以下四个段设置为内网IP段:
192.168.0.0 ~ 192.168.255.255
10.0.0.0 ~ 10.255.255.255
127.0.0.0 ~ 127.255.255.255
172.16.0.0 ~ 172.31.255.255

如何判断一个IP地址是否属于内网IP段呢?众所周知,IP地址是可以转换成一个整数的,而且IP地址是和整数一一对应的,我们判断一个IP是否在一个IP段里面,只需将Ip段的起始值,目标IP值全部转换为整数,然后比较大小即可。

  1. 利用这个理论还能解决另外一个问题,假设此时有一个ip:10.0.0.1,它的八进制形式为012.0.0.1,相应的还有它的十六进制,十进制以及省略写法,请求012.0.0.1将相当于请求10.0.0.1,所以仅仅凭借IP字符串是否相同是不能做到有效的过滤的,为了解决这个问题,采用了和上面一样的解决办法,将IP的各个形式转换成一个整数,比较整数是否相等判断是否是同一个IP
    在这里我调用了一个第三方的库来实现这个功能。
  2. 设置白名单和黑名单验证:首先判断该IP是否在黑名单中,不在直接访问;在的话接着判断是否在白名单中,在则允许访问,否则不允许访问

域名限制

不能通过简单的将域名放到白名单黑名单中对比来判断是不是允许访问,我们需要首先将域名解析成ip,因为该域名所绑定的IP可能是一个恶意IP,然后再对IP进行上述的判断

URL跳转

当我们请求的目标返回3xx状态的时候,如果没有禁止跳转的设置,如果跳转的地址是内网地址,将会造成SSRF漏洞
对此有两种解决办法:

  • 不允许目标进行跳转
  • 每跳转一次就检查新的HOST是否符合上面的验证规范

实现过程:

  • 创建一个HttpURLConnection连接对象
  • 使用这个对象创建一个URL连接,如果返回的状态码为3xx,说明发生了重定向,再去返回的头信息的location字段中找到要重定向的url
  • 接着重复上述过程

相关文章

  • 安全包开发整体架构

    SSRF防御 SSRF安全漏洞以及防御实现 XSS防御 xss漏洞以及防御实现 CSRF防御 CSRF安全漏洞以及...

  • SSRF安全漏洞以及防御实现

    简介 SSRF即服务端请求伪造,利用漏洞伪造服务端发起请求,从而突破客户端获取不到数据的限制 形成的原因 服务端提...

  • CSRF安全漏洞以及防御实现

    CSRF攻击原理 CSRF:跨站请求伪造 用户访问一个正常网站例如www.baidu.com 用户又访问了攻击者构...

  • 【SSRF】SSRF漏洞攻击与防御

    0x01 概述 SSRF(Server-side Request Forge, 服务端请求伪造)。由攻击者构造的攻...

  • 常见安全漏洞以及防御措施

    “如果有足够的眼球,所有的虫子都很浅。” — Linus Torvalds 1:跨站脚本攻击(XSS攻击:Cros...

  • 长亭chaitin.cn的技术面

    宽字节注入的原理 CSRF原理及防御 SSRF原理及防御 xss:expression()支持的浏览器 渗透的几个...

  • weBug 4.0 第30关 ssrf

    构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。SSRF 形成的...

  • csrf以及ssrf

    什么是csrf csrf通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但...

  • PHP开发中防御SSRF

    参考phith0n的谈一谈如何在Python开发中拒绝SSRF漏洞,用PHP写一个检测是否是内网URL的函数。 需...

  • xss漏洞以及防御实现

    XSS三种类型 存储型XSS:数据库中存在XSS攻击的数据,若数据未经过任何转义,返回给客户端。被浏览器渲染,就可...

网友评论

      本文标题:SSRF安全漏洞以及防御实现

      本文链接:https://www.haomeiwen.com/subject/kaicvftx.html