一、ssrf漏洞定义

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

SSRF漏洞( 服务器端请求伪造 )也被称为跨站点端口攻击,主要用于端口扫描 。

二、ssrf漏洞产生原因

SSRF漏洞产生的原因是由于服务端提供了从其他服务器应用获取数据的功能且没有对地址和协议等做过滤和限制

三、ssrf漏洞原理

SSRF原理:大多是由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制,从而导致出现了SSRF漏洞,导致本地文件泄露,可以攻击到内网,获取账号密码等信息。

四、ssrf漏洞常用函数

协议: file协议, gopher协议,dict协议,sftp协议,tftp协议,http/https协议,ldap协议

五、ssrf漏洞危害

1、可以对服务器所在的内网、本地进行端口扫描,获取一些服务的banner信息

2、攻击运行在内网或本地的应用程序(比如溢出)

3、对内网web应用进行指纹识别,通过访问应用存在的默认文件实现;

4、攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2漏洞利用等)

5、利用file协议读取本地文件

6、利用Redis未授权访问,HTTP CRLF注入达到getshell

7、DOS攻击(请求大文件,始终保持连接keep alive always)等等

六、ssrf漏洞可能出现的地点

1、 通过url地址分享网页内容功能处

2、转码服务

3、在线翻译

4、图片加载与下载(一般通过url地址加载或下载图片处)

5、图片、文章收藏功能

6、未公开的api实现以及其他调用url的功能

7、云服务器商(它会远程执行一些命令来判断网站是否存活等,所以如果可以捕获相应的信息,就可以进行ssrf测试)

8、有远程图片加载的地方(编辑器之类的远程图片加载处)

9、网站采集、网页抓取的地方(一些网站会针对你输入的url进行一些信息采集工作)

10、头像处(某易就喜欢远程加载头像,例如:http://www.xxxx.com/image?url=http://www.image.com/1.jpg)

11、邮件系统(比如接收邮件服务器地址)

12、编码处理, 属性信息处理,文件处理(比如ffpmg,ImageMagick,docx,pdf,xml处理器等)

13、从远程服务器请求资源(upload from url 如discuz!;import & expost rss feed 如web blog;使用了xml引擎对象的地方 如wordpress xmlrpc.php)

七、如何验证ssrf漏洞

1、排除法:浏览器f12查看源代码看是否是在本地进行了请求

比如:该资源地址类型为 http://www.xxx.com/a.php?image=URL,URL参数若是其他服务器地址就可能存在SSRF漏洞

2、dnslog等工具进行测试,看是否被访问(可以在盲打后台,用例中将当前准备请求的url和参数编码成base64,这样盲打后台解码后就知道是哪台机器哪个cgi触发的请求)

3、抓包分析发送的请求是不是通过服务器发送的,如果不是客户端发出的请求,则有可能是存在漏洞。接着找存在HTTP服务的内网地址

  3.1、从漏洞平台中的历史漏洞寻找泄漏的存在web应用内网地址

  3.2、通过二级域名暴力猜解工具模糊猜测内网地址

  3.3、通过file协议读取内网信息获取相关地址

4、直接返回的Banner、title、content等信息

5、留意布尔型SSRF,通过判断两次不同请求结果的差异来判断是否存在SSRF,类似布尔型sql盲注方法。

八、ssrf漏洞的绕过方法

1、直接攻击本地地址,127.0.0.1

2、利用[::]绕过localhost,http://[::]:80/ >>> http://127.0.0.1

3、@绕过,http://example.com@127.0.0.1

4、短地址绕过,http://dwz.cn/11SMa >>> http://127.0.0.1

5、使用特效域名绕过( DNS解析 ),http://127.0.0.1.xip.io/

6、利用DNS解析, 在域名上设置A记录,指向127.0.0.1

7、修改"type=file"为"type=url",如:上传图片处修改上传,将图片文件修改为URL

8、利用Enclosed alphanumerics

9、使用句号绕过,127。0。0。1 >>> 127.0.0.1

10、利用进制转换绕过,115.239.210.26 >>> 016373751032

方法:将这个IP地址的4位十进制数分别转换成16进制数,然后将这个16进制数转换一起转为8进制数

八进制在最前面加0,十六进制在最前面加0x

11、使用特效地址绕过,http://0/

12、使用相关协议绕过, file协议, gopher协议,dict协议等相关协议

13、30x跳转绕过

14、多种绕过方法一同组合使用, 各种绕过进行自由组合

九、SSRF新型攻击手法的流程

1. 利用服务器发起一个 HTTPS 请求。
2. 请求时会发起一个 DNS 解析请求,DNS 服务器回应一个 TTL 为 0 的结果,指向攻击者的服务器。
3. 攻击者服务器响应请求,并返回一个精心构造过的 SessionID,并延迟几秒后回应一个跳转。
4.客户端接收到这个回应之后会进行跳转,这次跳转时由于前面那一次 DNS 解析的结果为 TTL 0,则会再次发起一次解析请求,这次返回的结果则会指向 SSRF 攻击的目标

举例:例如本地的memcache数据库
5. 因为请求和跳转时的域名都没有变更,本次跳转会带着之前服务端返回的精心构造过的 SessionID 进行,发送到目标的那个端口上。
6. 则达到目的,成功对目标端口发送构造过的数据,成功 SSRF。

十、如何防御和修复ssrf漏洞

1、过滤返回信息,验证远程服务器对请求的响应是比较容易的方法。

2、在返回结果展示给用户之前先验证返回的信息是否符合标准。

3、禁用不需要的协议,仅仅允许http和https请求。

4、设置URL白名单, 对URL参数进行过滤,或者使得URL参数用户不可控

5、限制内网IP(使用gethostbyname( )判断是否为内网IP)

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

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

8、 去除url中的特殊字符 ,更改ip地址写法,严格检验服务器的请求

9、 如果是域名的话,将url中的域名改为ip,对协议和地址进行验证(http改为ip,防止dns rebinding)

10、请求的url为3中返回的url

11、请求时设置host header为ip,防止以ip请求时,某些网站无法访问的问题

12、 不跟随30x跳转(跟随跳转需要从1开始重新检测)

ssrf漏洞随笔的更多相关文章

  1. WebLogic SSRF 漏洞 (简要翻译)

    [Ref]http://blog.gdssecurity.com/labs/2015/3/30/weblogic-ssrf-and-xss-cve-2014-4241-cve-2014-4210-cv ...

  2. SSRF漏洞总结

    SSRF漏洞:(服务端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问的内部系统.(正是因为它是由服务端发起的,所以它能够请求到与它相连而 ...

  3. 浅谈SSRF漏洞

    SSRF漏洞是如何产生的? SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF是要目标网站 ...

  4. SSRF漏洞挖掘经验

    SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞.一般情况下,SSRF攻击的目标是从外网无法访问 ...

  5. SSRF漏洞浅析

    大部分web应用都提供了从其他的服务器上获取数据的功能,如使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等.如果服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与 ...

  6. weblogic系列漏洞整理 -- 5. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210)

    目录 五. weblogic SSRF 漏洞 UDDI Explorer对外开放 (CVE-2014-4210) 1. 利用过程 2. 修复建议 一.weblogic安装 http://www.cnb ...

  7. SSRF漏洞

    概念:服务端在获取攻击者输入的url时,如果这个过程中,服务端并没有对这个url做任何的限制和过滤,那么就很有可能存在ssrf漏洞. 漏洞利用:SSRF攻击的目标一般是外网无法访问的内部系统.攻击者可 ...

  8. 一个网络设备的常见功能--连通性检查SSRF漏洞--被黑客利用当做扫描器

    一.我们先来看一下很多网络设备都有的一个常见功能--连通性测试: 很多网络设备都具备与其他设备通信,联动的功能,例如网络设备联动安全设备,网络设备联动认证设备等等.此时都需要一个对端IP和对端端口号作 ...

  9. SSRF漏洞的挖掘经验

    本文转自:https://sobug.com/article/detail/11 SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造 ...

随机推荐

  1. Java核心API-日期时间

    java.util.Date Date类用来表示时间点. 时间是用距离一个固定时间点的毫秒数表示的,这个时间点就是纪元. UTC时间是为表示这个纪元的科学标准时间,从1970年1月1日0时开始.另一种 ...

  2. 创建Akamai CDN

    背景说明: XX全球版项目CDN, 原有改之前:主CDN为Akamai,备CDN为Cloudflare. 计划改之后:主CDN为Cloudflare,备CDN为Akamai. 原因:Akamai CD ...

  3. 13 Nginx访问日志分析

    #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin # Nginx 日志格式: # ...

  4. css题库(含答案)

    tip:<为< 单选题 1.页面上的div标签,其HTML结构如下: <div id="father"> <p class="son&quo ...

  5. CRM客户管理软件如何帮助销售?

    对现代企业来说,销售团队的作用是举足轻重的.这与企业的利益密切相关,因此提高企业的销售绩效是企业的首要目标.CRM客户管理软件能够帮助企业做到以客户为中心,构建及改善客户关系,帮助企业优化业务流程,实 ...

  6. gRPC 拦截器能做些什么?

    什么是拦截器? 拦截器是一种横切维度的功能延展. 具象说明一下,高速收费站就是一种拦截器.它可以做什么?收费,查证,交通控制等等,面向所有穿行过往的车辆. gRPC 拦截器主要分为两种:客户端拦截器( ...

  7. IDEA中Springboot启动热部署

    在IDEA中开发springboot项目时,每次修改代码后都需要手动重启项目比较麻烦,可以通过添加一定的配置使每次修改代码后项目进行自动重启 在IDEA中开发springboot项目时,每次修改代码后 ...

  8. 7 shell 数学运算

    shell中数学运算的易错点: 1.在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储.即使是将整数和小数赋值给变量,它 ...

  9. buu crypto 凯撒?替换?呵呵!

    一. 以为是简单的凯撒加密,但是分析Ascill表,发现毫无规律,意味着要爆破出所有可能.只能用在线工具来弄了,脚本是不可能写的(狗头) 找到了,但是提交不成功,需要变成小写,用脚本转换一下,同时很坑 ...

  10. SpringBoot默认首页跳转设置

    大家在使用SpringBoot时候会遇到将系统接口入门设置为"/",那么这个就是我们常见的默认首页跳转的设置.解决的方式有两种 第一种方式:controller里添加一个" ...