什么是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. java功能-发送http请求

    一.发送json public void test() throws IOException { //参数封装--------------------------------------------- ...

  2. 机器学习——常见的backbone

    参考链接:https://www.zhihu.com/question/396811409/answer/1252521120 LeNet:5层轻量级网络,一般用来验证小型数据: AlexNet/VG ...

  3. Houdini_Python笔记

    目录 Gemetry 用Stash节点预览模型 判断文件是否存在 PDG Gemetry 用Stash节点预览模型 import hou stashParm = stashNode.parm(&quo ...

  4. UTT艾泰路由器默认口令(admin/admin)

    网络空间资产搜索: 登陆弱口令:admin/****** 登陆成功 End!!!

  5. ssh scp 相关

    1. 设置ssh 的免密登录 1> 将 ~/.ssh/id_rsa.pub文件中的内容拷贝到 远程host的 ~/.ssh/authorized_keys文件中 2> ssh-copy-i ...

  6. python基础篇 26-redis操作

    redis的基本操作: redis_conf ={ 'host':'192.168.64.128', 'password':'Aa123456', 'db':'0', 'port':6379, 'de ...

  7. uniapp 全局注册组件注意事项

    标准 根目录components  文件夹下建立 组件文件名文件夹 然后组件 autoscan  打开 别的用不到不写 全局使用 备注 因为不是vuecli 项目 只在H5 端生效  在app  上生 ...

  8. maven资源导出问题

    <!--在build中配置resources,来防止我们资源导出失败的问题--> <build> <resources> <resource> < ...

  9. vue组件传参,父子组件以及兄弟组件(非常详细)

    一,父子组件传参. 1.首先在项目目录中新建template文件夹,里边包含父组件:List.vue以及子组件:firstComponent.vue,secondComponent.vue. 2.父组 ...

  10. <c:forEach>循环获取下一次循环数据

    <c:forEach>循环获取下一次循环数据 实现案例类似于多级导航栏下拉.双循环便利ul.li,利用外层循环的index获取数据.动态id设置. varLista[vs.index][l ...