什么是SSRF?

犹如其名,SSRF(Server-Side Request Forgery)服务端请求伪造,攻击者可以控制服务器返回的页面,借用服务器的权限访问无权限的页面。

这是一个允许恶意用户导致网络服务器向攻击者选择的资源发出附加或编辑的HTTP请求的漏洞。

SSRF 的类型

有两种类型的 SSRF 漏洞;第一个是常规的 SSRF,其中数据返回到攻击者的屏幕。

第二种是盲目 SSRF 漏洞,发生 SSRF,但没有信息返回到攻击者的屏幕

成功的 SSRF 攻击可能导致以下任何情况:

  • 进入未经授权的区域
  • 访问客户/组织数据。
  • 能够扩展到内部网络
  • 显示身份验证令牌/凭证

示例:

我们将带您了解一些SSRF攻击示例,并解释它们的工作原理

说明书

以下示例显示了攻击者如何完全控制Web服务器请求的页面。

Expected Requestwebsite.thm服务器期望接收的内容,红色部分是网站获取信息的URL。

攻击者可以将红色区域修改为自己选择的URL

下面的示例显示了攻击者如何仍然可以通过使用目录遍历来访问/api/user页面,而只需控制路径。当website.thm收到../这是一条向上移动目录的消息,该目录删除了请求的/stock部分,并将最终请求转换为/api/user

在此示例中,攻击者可以控制向其发出请求的服务器子域。请注意以&x=结尾的有效负载用于阻止将剩余路径附加到攻击者URL的末尾,并将其转换为查询字符串上的参数(?x=)

回到原始请求,攻击者可以强制Web服务器请求攻击者选择的服务器。通过这样做,我们可以捕获发送到攻击者指定域的请求标头。这些标头可能包含website.thm发送的身份验证凭据API密钥(通常会向API.website.thm)

使用您所学的内容,尝试更改下面浏览器中的地址,以强制Web服务器从https://server.website.thm/flag?id=9.

为了更方便,模拟浏览器底部的服务器请求栏将显示website.thm请求的URL

使用&截断,是服务器认为server参数的已经传输完毕

如何发现SSRF

可以通过许多不同的方式在 Web 应用程序中发现潜在的 SSRF 漏洞。以下是四个常见位置的示例:

在地址栏的参数中使用完整 URL 时:

表单中的隐藏字段:

部分 URL,例如主机名:

或者可能只是 URL 的路径:

其中一些示例比其他示例更容易被利用,而这正是需要大量试验和错误才能找到有效负载的地方

如果使用没有输出的盲目 SSRF,您将需要使用外部HTTP日志记录工具来监视请求,例如 http://requestbin.com、您自己的 HTTP 服务器或 Burp Suite 的 Collaborator 客户端

常见的防御

了解 SSRF 漏洞风险的更多精通安全的开发人员可能会在其应用程序中实施检查,以确保请求的资源符合特定规则。通常有两种方法,拒绝列表允许列表,简单来说就是黑名单白名单

拒绝列表

拒绝列表是除了列表中指定的资源或与特定模式匹配的资源之外的所有请求都被接受的地方

Web 应用程序可以使用拒绝列表来保护敏感端点、IP 地址或域不被公众访问,同时仍然允许访问其他位置。限制访问的特定端点是 localhost,它可能包含服务器性能数据或其他敏感信息,因此 localhost 和 127.0.0.1 等域名将出现在拒绝列表中

绕过方法

攻击者可以通过使用替代本地主机引用(例如 0、0.0.0.0、0000、127.1、127...*、2130706433、017700000001 或具有解析为 IP 地址 127.0.0.1 的 DNS 记录的子域)来绕过拒绝列表例如 127.0.0.1.nip.io

此外,在云环境中,阻止对 IP 地址 169.254.169.254 的访问将是有益的,该地址包含已部署云服务器的元数据,包括可能的敏感信息。攻击者可以通过在自己的域上注册一个子域来绕过此问题,该子域的DNS记录指向 IP 地址 169.254.169.254

允许列表

允许列表是拒绝所有请求的地方,除非它们出现在列表中或匹配特定模式,例如参数中使用的 URL 必须以 https://website.thm 开头的规则

绕过方法

攻击者可以通过在攻击者的域名上创建子域来快速规避此规则,例如 https://website.thm.attackers-domain.thm。应用程序逻辑现在将允许此输入并让攻击者控制内部HTTP请求

打开重定向

如果上述旁路不起作用,攻击者还有一个妙招,即打开重定向。开放重定向是服务器上的一个端点,网站访问者会自动重定向到另一个网站地址。以链接为例https://website.thm/link?url=https://tryhackme.com.创建此端点是为了记录访问者出于广告/营销目的点击此链接的次数。但想象一下,存在一个潜在的SSRF漏洞,该漏洞具有严格的规则,仅允许以开头的URLhttps://website.thm/.攻击者可以利用上述功能将内部HTTP请求重定向到攻击者选择的域

实际例子

在针对Acme IT 支持网站的内容发现练习中,我们遇到了两个新端点 。第一个是 /private



它给我们一条错误消息,说明无法从我们的 IP 地址查看内容

第二个是位于/customers/new-account-page的新版客户帐户页面



其中 包含一项新功能,允许客户为他们的帐户选择头像,进入该页面需要先将注册一个用户然后登录

右键检查查看新的头像选择功能,通过查看头像表单的页面源代码,您会看到头像表单字段值包含图像的路径。根据下面的屏幕截图,背景图像样式可以在上面的 DIV 元素中确认这一点:

尝试正确的更改一次头像,在我们提交修改头像的时候,会将该路径提交更改为我们的头像,



更改后发现图片显示到了页面,并且显示了图片的base64编码内容

所以我们将图片的提交地址改为/private的地址,该页面就会讲/private的值使用base64编码返回

尝试:

修改后提交查看



提示我们不能已/private开头,我们可以使用Junglezt/../private尝试,Junglezt/的意思是选择并进入Junglezt/目录不管是否存在,然后再使用../跳出Junglezt目录,等于原地踏步,但是可以绕过识别不能已/privite的限制





可以看到头像设置完成,这是我们只需要查看页面源代码,将base64编码信息进行解密即可

VEhNe1lPVV9XT1JLRURfT1VUX1RIRV9TU1JGfQ==

解码

echo VEhNe1lPVV9XT1JLRURfT1VUX1RIRV9TU1JGfQ== | base64 -d

THM{YOU_WORKED_OUT_THE_SSRF}

SSRF Server-Side Request Forgery(服务器端请求伪造)的更多相关文章

  1. Pikachu-SSRF(服务器端请求伪造)

    SSRF(Server-Side Request Forgery:服务器端请求伪造) 其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制 导致攻击者可 ...

  2. SSRF服务器端请求伪造

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

  3. 5.SSRF服务器端请求伪造

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

  4. SSRF服务器端请求伪造漏洞基础

    0x00 思考 1.什么是SSRF漏洞?2.SSRF漏洞的利用方式3.SSRF漏洞绕过4.SSRF漏洞加固 0x01 什么是SSRF漏洞 定义:SSRF漏洞,中文全称为服务端请求伪造漏洞,是一种由攻击 ...

  5. Weblogic服务端请求伪造漏洞(SSRF)和反射型跨站请求伪造漏洞(CSS)修复教程

    一.服务端请求伪造漏洞 服务端请求伪造(Server-Side Request Forgery),是指Web服务提供从用户指定的URL读取数据并展示功能又未对用户输入的URL进行过滤,导致攻击者可借助 ...

  6. pikachu-服务器端请求伪造SSRF(Server-Side Request Forgery)

    一.SSRF概述(部分内容来自pikachu平台) SSRF(Server-Side Request Forgery:服务器端请求伪造),其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功 ...

  7. SSRF 跨站请求伪造学习笔记

    参考文章: 了解SSRF,这一篇就足够了 SSRF 学习之路 SSRF绕过方法总结 Weblogic SSRF漏洞 What-是什么 SSRF(Server-Side Request Forgery) ...

  8. SSRF(服务端请求伪造)漏洞

    目录 SSRF SSRF漏洞的挖掘 SSRF漏洞利用 SSRF漏洞防御 SSRF SSRF(Server-Side Request Forgery,服务器端请求伪造)漏洞,是一种由攻击者构造请求,由服 ...

  9. 渗透之路基础 -- 服务端请求伪造SSRF

    简介:SSRF 服务器端请求伪造,有的大型网站在web应用上提供了从其他服务器获取数据的功能.使用户指定的URL web应用获取图片,下载文件,读取文件内容.通常用于控制web进而探测内网服务以及攻击 ...

  10. CSRF(Cross-site request forgery)跨站请求伪造

    CSRF 背景与介绍 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...

随机推荐

  1. 北斗GPS授时系统技术及ntp时钟服务器(PTP)在电力系统中的应用

    北斗GPS授时系统技术及ntp时钟服务器(PTP)在电力系统中的应用 北斗GPS授时系统技术及ntp时钟服务器(PTP)在电力系统中的应用 技术交流:岳峰 15901092122 bjhrkc@126 ...

  2. 攻防世界Web篇——unserialize3

    知识点: 序列化与反序列化维基百科:    序列化(serialization)在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式(例如存成文件,存于缓冲,或经由网络中发送),以留待后 ...

  3. 配置vscode快速输出模板

    1.文件 ----> 首选项 -----> 用户片段:要配置什么文件的就搜什么文件的. 2.以HTML文件举例: 打开html.json: 输入以下代码: "Print to c ...

  4. Windows如何生成公钥和私钥

    Windows如何生成公钥和私钥 方法一)使用git命令 一. 首先安装git二. 桌面上右键 Git Bash Here三. 命令ssh-keygen -t rsa然后 一直enter 四. 将公钥 ...

  5. swift 应用内切换语言

    1:在project info中的locations添加需要的语言 2:创建Localizable.strings文件 点击右边的localization勾选需要的语言 3:创建InfoPlist.s ...

  6. centos7.6镜像

    centos7.6镜像 https://archive.kernel.org/centos-vault/7.6.1810/isos/x86_64/

  7. microbit问题记录

    问题: 1.电子罗盘东南西北:不太好用 2.    micropython代码:震动.声音显示不对 makecode代码:声音不好用 已解决: 1.摇杆下和左不管用了(已解决:改软件包代码) 2.ma ...

  8. IDEA中maven项目右侧maven图标不见了

    右侧maven图标没有了 解决方法:双击shift(或者点击help-->Find Action) 打开搜索功能 ---> 搜素Maven Project--->选择Add Mave ...

  9. CSS 选择器-认识并应用选择器

    在内嵌式和外部css中,要想将CSS样式应用于特定的HTML元素,首先需要找到该目标元素,这时需要用到CSS中的选择器. 选择器:选择要添加样式的 HTML 标签的一种方法.模式. 首先学习 css2 ...

  10. 禁止的回文子串 Dyslexic Gollum

    UVA1633 一个长的回文串都可以由短的回文串拓展而来,只要短的回文在左右两端增加相同的字符即可.因此,在考虑长度为NNN的01串时,只要在从长度为1向NNN拓展的过程中,保证后KKK个字符不是回文 ...