Web安全之SSRF漏洞

Web安全之SSRF漏洞内容SSRF漏洞的危害SSRF漏洞的挖掘SSRF漏洞的防御SSRF漏洞原理概述背景SSRF(Server-SideRequestForgery:服务器端请求伪造)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。概述很多Web应用都提供了从其他服务器上获取数据的功能。使用用户指定的URL,Web应用可以获取图片…

大家好,又见面了,我是你们的朋友全栈君。

内容

  1. SSRF漏洞的危害
  2. SSRF漏洞的挖掘
  3. SSRF漏洞的防御
  4. SSRF漏洞原理概述

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

概述
很多Web应用都提供了从其他服务器上获取数据的功能。使用用户指定的URL,Web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存在缺陷的web应用作为代理攻击远程和本地服务器。

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

大部分的web服务器架构中,web服务器自身都可以访问互联网和服务器所在的内网。
在这里插入图片描述

SSRF可以做什么

  • 可以对外网服务器所在的内网、本地进行端口扫描,获取一些服务的banner信息 。
  • 攻击运行在内网或者本地的应用程序。
  • 对内网web应用进行指纹识别,通过访问默认文件实现 。
  • 攻击内外网的web应用。sql注入、struct2、redis等。
  • 利用file协议读取本地文件等。

SSRF漏洞挖掘

一. WEB功能上查找
由原理可以看出,SSRF是由于服务端获取其他服务器的相关信息的功能中形成的,因此我们大可以列举几种在web 应用中常见的从服务端获取其他服务器信息的的功能。

  1. 通过URL地址分享网页内容早期应用中 ,为了更好的用户体验,Web应用在分享功能中,通常会获取目标URL地址网页内容中标签或者<meta name=“description”content=“”/>标签中content的文本内容提供更好的用户体验。在这里插入图片描述
  2. 转码服务
    转码服务:通过URL地址把原地址的网页内容调优使其适合手机屏幕浏览

由于手机屏幕大小的关系,直接浏览网页内容的时候会造成许多不便,因此有些公司提供了转码功能,把网页内容通过相关手段转为适合手机屏幕浏览的样式。例如百度、腾讯、搜狗等公司都有提供在线转码服务。

  1. 在线翻译
    在线翻译:通过 URL地址翻译对应文本的内容。提供此功能的百度、有道等。
    有道翻译某处SSRF可通网易内网:
    http://www.anquan.us/static/bugs/wooyun-2016-0198176.html

  2. 图片加载与下载
    图片加载与下载:通过 URL地址加载或下载图片
    图片加载远程图片地址此功能用到的地方很多,但大多都是比较隐秘,比如在有些公司中的加载自家图片服务器上的图片用于展示。(此处可能会有人有疑问,为什么加载图片服务器上的图片也会有问题,直接使用img标签不就好了,没错是这样,但是开发者为了有更好的用户体验通常对图片做些微小调整例如加水印、压缩等,就必须要把图片下载到服务器的本地,所以就可能造成SSRF问题)。

二. 从URL关键字中寻找

  • Share、wap、url、link、src、source、target、u、3g、display、sourceURL、imageURL、domain

三. 通用的SSRF实例

  • Weblogic配置不当,天生ssrf漏洞
  • Discuz x2.5/x3.0/x3.1/x3.2 ssrf漏洞

SSRF漏洞的验证

http://www.douban.com/***/service?image=http://www.baidu.com/img/bd_logo1.png

  1. 我们先验证,请求是否是服务器端发出的,可以右键图片,使用新窗口打开图片,如果浏览器上地址栏是http://www.baidu.com/img/bd_logo1.png,说明不存在SSRF漏洞。

  2. 可以在Firebug 或者burpsuite抓包工具,查看请求数据包中是否包含http://www.baidu.com/img/bd_logo1.png这个请求。由于SSRF是服务端发起的请求,因此在加载这张图片的时候本地浏览器中不应该存在图片的请求。

  3. 在验证完是由服务端发起的请求之后,此处就有可能存在SSRF,接下来需要验证此URL是否可以来请求对应的内网地址。首先我们要获取内网存在HTTP服务且存在favicon.ico文件地址,才能验证是否是SSRF。

此处找内网地址可以通过从漏洞平台中的历史漏洞寻找泄露的内网地址过滤绕过

@:
http://www.baidu.com@10.10.10.10与http?/10.10.10.10 请求是相同的

过滤绕过
IP地址转换成十进制:
127.0.0.1=2130706433
在这里插入图片描述
xip.io
xip.io127.0.0.1.xip.io –>127.0.0.1
www.127.0.0.1.xip.io –>127.0.0.1
Haha.127.0.0.1.xip.io –>127.0.0.1
Haha.xixi.127.0.0.1.xip.io –>127.0.0.1

修复方案

  1. 统一错误信息,避免用户可以根据错误信息来判断远程服务器端口状态
  2. 限制请求的端口为HTTP常用的端口,比如 80,443,8080,8088等
  3. 黑名单内网IP。
  4. 禁用不需要的协议,仅仅允许HTTP和HTTPS.

相关资源

  • [安全科普]SSRF攻击实例解析
  • 乌云多数已修复SSRF漏洞可被绕过
  • 利用 Gopher 协议拓展攻击面
  • SSRF libcurl protocol wrappers利用分析
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152829.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 新的Oracle网站登录界面

    新的Oracle网站登录界面

    2021年8月22日
    54
  • java逻辑删除_MybatisPlus中的删除和逻辑删除及区别介绍

    java逻辑删除_MybatisPlus中的删除和逻辑删除及区别介绍删除又分为逻辑删除和物理删除,那么它们有什么区别呢?物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除与逻辑删除怎么实现的吧首先假设我有这样一张表实体类:package…

    2022年6月2日
    42
  • 【spring】Spring事件监听器ApplicationListener的使用与源码分析

    【spring】Spring事件监听器ApplicationListener的使用与源码分析ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。Spring提供的内置事件:ContextRefreshedEvent:容器刷新事件ContextStartedEvent:容器启动事件ContextStoppedEvent:容器停止事件ContextClo

    2025年6月30日
    3
  • 批量给图片重命名_图片快速重命名编号

    批量给图片重命名_图片快速重命名编号如果你是一名摄影师,又或者你是一名图片设计的工作人员,工作中肯定会面对很多图片文件,图片多了就需要进行整理,不然就很难区分和管理,就很不利于我们的使用。为了更好的整理往往我们就需要给图片进行重命名并且排序,这就出现一个问题了,如何批量重命名这些图片并且进行编号呢?如果你还不知道如何解决这个问题,那么你就要跟随小编的步伐,我来为大家详细介绍图片批量重命名编号的方法吧!需要使用的软件:优速文件批量重命名软件下载地址:免费下载优速文件批量重命名软件https://www.yososoft.com/do

    2025年9月12日
    5
  • 年年双十一,年年抢不到,自制Python淘宝秒杀抢购脚本,百分百中[通俗易懂]

    年年双十一,年年抢不到,自制Python淘宝秒杀抢购脚本,百分百中[通俗易懂]大家好,我是不学前端的前端程序员,事情是这个样子的,前几天不是双十一预购秒杀嘛由于我女朋友比较笨,手速比较慢,就一直抢不到,她没抢到特价商品就不开心,她不开心,我也就不能跟着开心,就别提看6号的全球总决赛了为了解决这个问题,就决定写一个自动定时抢购的脚本。第一步:首先我的思路很简单,就是让“程序”帮我们自动打开浏览器,进入淘宝,然后到购物车等待抢购时间,自动购买并支付。第二步:导入模块,我们需要一个时间模块,抢购的时间,还有一个Python的自动化操作。代码如下:importd

    2022年4月29日
    74
  • c#与WMI使用技巧集http://www.cnblogs.com/Sandheart/articles/1568636.html[通俗易懂]

    c#与WMI使用技巧集http://www.cnblogs.com/Sandheart/articles/1568636.html[通俗易懂](转)c#与WMI使用技巧集1、什么是WMI WMI是英文WindowsManagementInstrumentation的简写,它的功能主要是:访问本地主机的一些信息和服务,可以管理远程计算机(当然你必须要拥有足够的权限),比如:重启,关机,关闭进程,创建进程等。 2、如何用WMI获得本地磁盘的信息? 首先要在VS.NET中创建一个项目,然后在添加引用中引用一个.

    2022年9月28日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号